Ajax 使用实例

在介绍实例之前,先就AJAX的几种便捷形式作出说明。

Ajax传输Data时有四种常用的数据类型,分别是html文档、Json数据、js文件和Xml文档,四种数据类型对应着如下方法:

数据形式 方法 适用情况
HTML 形式 $().load(a,b)   适用于对数据没什么操作的情况,如简单的文本拼接等
Json 形式 $.getJSON(a,b) 特点是格式清晰,数据较少,但对结构要求很精确,人工编写时要特别注意。适用于数据需要重用的情况,能在性能上得到显著提高。
JS 形式 $.getScript(a,b) 某些不是很常用的js语句,不必再页面load一开始就加载,则可将其置于外部js文件中,设置一个调用的触发事件,可减少初始代码加载量
Xml 形式 $.get(a,b)  当远程应用程序未知时,基于其广泛适用性的特点,使用XML文档能保证良好的互操作性。

  ps:其中参数中a对应文件路径,b对应对文件的处理方法。

下面以Json数据为例,简要介绍此用法。

假设有b.json文件,其中的json数据如下:

[
  {
    "term": "BACCHUS",
    "part": "n.",
    "definition": "A convenient deity invented by the...",
    "quote": [
      "Is public worship, then, a sin,",
      "That for devotions paid to Bacchus",
      "The lictors dare to run us in,",
      "And resolutely thump and whack us?"
    ],
    "author": "Jorace"
  },
  {
    "term": "BACKBITE",
    "part": "v.t.",
    "definition": "To speak of a man as you find him when..."
  },
  {
    "term": "BEARD",
    "part": "n.",
    "definition": "The hair that is commonly cut off by..."
  },
  ... file continues ...

则相应的读取文件的jquery语句如下:

 1 $(function(){
 2     $(‘a‘).click(function(event){
 3         event.preventDefault();
 4         //载入b.json文件,并以function(data){}方法进行处理
 5         $.getJSON(‘b.json‘,function(data){
 6             var html="";
 7             //$.each()方法以数组或对象作为第一个参数,以回调函数作为第二个参数
 8             //回调函数中第一个参数为每次循环中数组或对象的当前项的索引,第二个参数是当前项
 9             $.each(data,function(entryIndex,entry){
10                  html+=‘<div class = "entry">‘;
11                  html += ‘<h3 class="term">‘ + entry.term + ‘</h3>‘;
12                  html += ‘<div class="part">‘ + entry.part + ‘</div>‘;
13                  html += ‘<div class="definition">‘;
14                  html += entry.definition;
15                  html += ‘</div>‘;
16                  html+=‘</div>‘;
17             });
18             //将$("#dictionary")中原有的html语言用html变量中的内容代替
19             $("#dictionary").html(html);
20         });
21     });
22 });  

也可将这段代码和json数据一并整合在一个js文件c.js中:

 1 var entries = [
 2     {
 3         "term": "CALAMITY",
 4         "part": "n.",
 5         "definition": "A more than commonly plain and..."
 6     },
 7     {
 8         "term": "CANNIBAL",
 9         "part": "n.",
10         "definition": "A gastronome of the old school who..."
11     },
12     {
13         "term": "CHILDHOOD",
14         "part": "n.",
15         "definition": "The period of human life intermediate..."
16     }
17         //省略的内容
18 ];
19
20 var html = ‘‘;
21 $.each(entries, function() {
22     html += ‘<div class="entry">‘;
23     html += ‘<h3 class="term">‘ + this.term + ‘</h3>‘;
24     html += ‘<div class="part">‘ + this.part + ‘</div>‘;
25     html += ‘<div class="definition">‘ + this.definition + ‘</div>‘;
26     html += ‘</div>‘;
27     });
28
29 $(‘#dictionary‘).html(html);

在html文档或是js中插入语句

  $.getScript(‘c.js‘);

即可实现以上js文件中的代码。

以上是对js文件和json数据调用方法的简单举例,大家如果有兴趣也可以自己查一下另两种方式的使用方法。

$.ajax()方法

1.简述

上文中提到的四种不同的方法,其实都是对$.ajax()进行简化封装后实现的简便方法,而这四种加载文件的方法通常适用于没有网络交互的单机操作。若需要实时更新,如jqGrid表格的编辑操作和动态更新状态下,需要与后台进行数据交互,则不宜使用文件形式。类似的情况还有很多,因此学会使用$.ajax()方法有着一定的必要性。

2.基本实例

  在.NET中,前端的$.ajax()方法通常与后台的Handler文件(.ashx)进行交互。

  前端代码:

1 //一个简单的ajax请求
2 $.ajax({
3      url: "/Scripts/AjaxHandler.ashx",
4      type: "post",
5      dataType: "json",
6      data: null,
7      success: function (data, textStatus, jqXHR) {
8      //对数据的处理操作
9 }

  对应的后台代码是:

 1 private StringBuilder Json = new StringBuilder ();
 2 private int num=0;
 3
 4 //Handler核心代码
 5 public void ProcessRequest(HttpContext context)
 6 {
 7      context.Response.ContentType = "text/plain";
 8      string[,] waiting = { { "aabc", "ddd" }, { "aacc", "eee" }, { "aadc", "sss" } };
 9      arrayToJson(waiting);
10      context.Response.Write(Json.ToString());
11 }
12 //将二维字符串数组转换为json数据格式的字符串
13 private void arrayToJson(string[,] array)
14 {
15      string temp = "";
16      Json.Append("[{");
17      for (int i = 0; i < 3; i++)
18      {
19           num = i;
20           temp = turnToJson(array[i, 0], array[i, 1]);
21           Json.Append( temp );
22           if (i != 2)
23               Json.Append(",");
24      }
25      Json.Append("}]");
26 }
27 //将传入的两个字符串转换为json中键值对的形式
28 private string turnToJson(string str1,string str2)
29 {
30     string json = "";
31     json+="\"";
32     json += str1 + "\":\"";
33     json += str2 + "\"";
34     return json;
35 }

此时完成的操作是,前台向相对路径为/Scripts/AjaxHandler.ashx的Handler文件以post传输方式发送json请求,定义传输数据类型为json数据,并定义了数据传输成功后对应的操作数据的方法。后台接受到前台的ajax请求后,以自定义的二维数组转成json格式的字符串回发。前台的data变量中保存着后台回发的数据内容,可使用$.each(data, function (entryIndex, entry) {});语句进行对json数据的操作。

3.参数介绍

ajax() 方法是 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax()返回其创建的 XMLHttpRequest 对象。大多数情况下无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。

注意:所有的选项都可以通过 $.ajaxSetup() 函数来全局设置。

语法:

jQuery.ajax([settings])

参数 描述
settings
可选。用于配置 Ajax 请求的键值对集合。

可以通过 $.ajaxSetup() 设置任何选项的默认值。

可选参数列表:

参数名 类型 默认值 表示作用
url String
当前页地址。


发送请求的地址。

type String "GET" 请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。
dataType String jQuery 自动根据 HTTP 包 MIME 信息来智能判断 预期服务器返回的数据类型。

可用值:

  • "xml": 返回 XML 文档,可用 jQuery 处理。
  • "html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
  • "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
  • "json": 返回 JSON 数据 。
  • "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
  • "text": 返回纯文本字符串
async Boolean true 设定HTTP请求是同步请求还是异步请求,默认是异步请求。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
cache Boolean
true,

dataType 为 script 和 jsonp 时默认为 false。

设置为 false 将不缓存此页面。
contentType String "application/x-www-form-urlencoded" 发送信息至服务器时内容编码类型。
timeout Number   设置请求超时时间(毫秒)。此设置将覆盖全局设置。
success Function  
请求成功后的回调函数。

参数:由服务器返回,并根据 dataType 参数进行处理后的数据;描述状态的字符串。

beforeSend(XHR) Function   发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。如果返回 false 将取消本次 ajax 请求。
complete(XHR, TS) Function  
请求完成后回调函数 (请求成功或失败之后均调用)。

参数: XMLHttpRequest 对象和一个描述请求类型的字符串。

data String  
发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。必须为 Key/Value 格式。

如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 ‘&foo=bar1&foo=bar2‘。

error Function 自动判断 (xml 或 html)
请求失败时调用此函数。

有以下三个参数:XMLHttpRequest 对象、错误信息、(可选)捕获的异常对象。

如果发生了错误,错误信息(第二个参数)除了得到 null 之外,还可能是 "timeout", "error", "notmodified" 和 "parsererror"。

jsonp String  
在一个 jsonp 请求中重写回调函数的名字。这个值用来替代在 "callback=?" 这种 GET 或 POST 请求中 URL 参数里的 "callback" 部分

比如 {jsonp:‘onJsonPLoad‘} 会导致将 "onJsonPLoad=?" 传给服务器。

jsonpCallback String  
为 jsonp 请求指定一个回调函数名。这个值将用来取代 jQuery 自动生成的随机函数名。

这主要用来让 jQuery 生成独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。你也可以在想让浏览器缓存 GET 请求的时候,指定这个回调函数名。

username String   用于响应 HTTP 访问认证请求的用户名。
password String  
用于响应 HTTP 访问认证请求的密码。

xhr Function   需要返回一个 XMLHttpRequest 对象。默认在 IE 下是 ActiveXObject 而其他情况下是 XMLHttpRequest 。用于重写或者提供一个增强的 XMLHttpRequest 对象。
traditional Boolean   如果你想要用传统的方式来序列化数据,那么就设置为 true。
scriptCharset String   只有当请求时 dataType 为 "jsonp" 或 "script",并且 type 是 "GET" 才会用于强制修改 charset。通常只在本地和远程的内容编码不同时使用。
processData Boolean true 默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。
global Boolean true 是否触发全局 AJAX 事件。
ifModified Boolean false 仅在服务器数据改变时获取新数据。
dataFilter Function   给 Ajax 返回的原始数据的进行预处理的函数。提供 data 和 type 两个参数:data 是 Ajax 返回的原始数据,type 是调用 jQuery.ajax 时提供的 dataType 参数。函数返回的值将由 jQuery 进一步处理。

4. AJAX get() 和 post() 方法

HTTP 请求:GET vs. POST

两种在客户端和服务器端进行请求-响应的常用方法是:GET 和 POST。

  • GET - 从指定的资源请求数据
  • POST - 向指定的资源提交要处理的数据

GET 基本上用于从服务器获得(取回)数据。注释:GET 方法可能返回缓存数据。

POST 也可用于从服务器获取数据。不过,POST 方法不会缓存数据,并且常用于连同请求一起发送数据。

下面的表格比较了两种 HTTP 方法:GET 和 POST。

  GET POST
后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
书签 可收藏为书签 不可收藏为书签
缓存 能被缓存 不能缓存
编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
历史 参数保留在浏览器历史中。 参数不会保存在浏览器历史中。
对数据长度的限制 是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 无限制。
对数据类型的限制 只允许 ASCII 字符。 没有限制。也允许二进制数据。
安全性
与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。

在发送密码或其他敏感信息时绝不要使用 GET !

POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
可见性 数据在 URL 中对所有人都是可见的。 数据不会显示在 URL 中。

Ajax 使用实例

时间: 2024-08-28 10:27:04

Ajax 使用实例的相关文章

简单的Ajax应用实例

从网页前端输入提示范围内的字符,然后显示从后台返回的结果 <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script type="text/javascript"> function showHint(str) { var xmlhttp; if (str.length==0) {

ajax 基础实例

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 优点:使用ajax读取数据文件,不需要刷新页面就能取出文件数据<br><br><br><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transition

AJAX 数据库实例

AJAX 用于创建动态性更强的应用程序. AJAX ASP 实例 下面的例子将演示当用户在输入框中键入字符时,网页如何与服务器进行通信: 实例 请在下面的输入框中键入字母(A - Z): 姓名: 建议: 亲自试一下源代码 实例解释 - HTML 页面 当用户在上面的输入框中键入字符时,会执行 "showHint()" 函数.该函数由 "onkeyup" 事件触发: <!DOCTYPE html> <html> <head> <

ajax常用实例代码总结参考

http的交互方法有四种:get.post.put(增加数据).delete(删除数据) put和delete实现用的是get和post get方式 页面不能被修改,只是获取查询信息.但是提交的数据会通过链接暴露在外,使用get请求会被人拿到登陆的用户名和密码,url长度有限制 post方式 页面可以修改,比如回帖.评论.但是提交的数据不会暴露在外,url长度无限制,但是提交大小会有限制 默认不被缓存,不在同一个请求域下远程请求,post都会被转为get 推荐两篇不错的jquery教程:<jQu

AJAX XML 实例

AJAX XML 实例 下面的例子将演示网页如何使用 AJAX 来读取来自 XML 文件的信息 <!DOCTYPE html> <html> <head> <script> function loadXMLDoc(url) { var xmlhttp; var txt,x,xx,i; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new

AJAX 请求实例

AJAX ASP/PHP 实例 下面的例子将为您演示当用户在输入框中键入字符时,网页如何与 web 服务器进行通信: 请在下面的输入框中键入字母(A - Z): 姓氏: 实例解释 - showHint() 函数 当用户在上面的输入框中键入字符时,会执行函数 "showHint()" .该函数由 "onkeyup" 事件触发: function showHint(str) { var xmlhttp; if (str.length==0) { document.get

C#基于数据库存储过程的AJAX分页实例

本文实例讲述了C#基于数据库存储过程的AJAX分页实现方法.分享给大家供大家参考.具体如下: 首先我们在数据库(SQL Server)中声明定义存储过程 代码如下: use sales    –指定数据库 if(exists(select * from sys.objects where name='proc_location_Paging')) –如果这个proc_location_paging存储过程存在则删除 drop proc proc_location_Paging go create

Ajax常用实例

摘录自:http://www.cnblogs.com/gaopeng527/p/4459622.html 1. 级联下拉列表 例1.1 级联下拉列表. (1)编写AjaxRequest.js文件,并将其保存到JS文件夹中.AjaxRequest.js的具体代码如下: var net = new Object(); //定义一个全局变量net //编写构造函数 net.AjaxRequest=function(url,onload,onerror,method,params){ this.req

php的ajax简单实例

很早就听闻ajax的名声,但是却一直不知道怎么用,今天自己捣鼓了一下,竟然会用了,哈哈哈哈. 为了防止我自己忘记,现在把这个简单的实例记录下.这个实例是网上搜的,文末附上链接. 首先你得有自己的服务器,这个我已经采用xampp配置好了. 实现ajax需要三个文件,一个是html的表单文件,一个是js的核心文件,一个是php的后台文件.具体的文件如下所示: 下面的是test.html文件,当键盘按下时触发showHint方法,在showHint方法中会有ajax的核心内容,实例化,获取地址,获取数