一. jQuery中Ajax的基本语法

1. Ajax 请求

(1) $.ajax(url,[settings])

通过 HTTP 请求加载远程数据。$.ajax() 返回其创建的 XMLHttpRequest 对象。

  • url:一个用来包含发送请求的URL字符串。
  • settings:AJAX 请求设置。所有选项都是可选的。

如果要处理$.ajax()得到的数据,则需要使用回调函数。回调函数主要有以下4个:

  • 1) beforeSend:在发送请求之前调用,并且传入一个XMLHttpRequest作为参数;
  • 2) error:在请求出错时调用。传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象(如果有的话);
  • 3) dataFilter:给Ajax返回的原始数据的进行预处理的函数。提供data和type两个参数:data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数;
  • 4) success:当请求成功之后调用。传入返回后的数据,以及包含成功代码的字符串;
  • 5) complete:当请求完成之后调用这个函数,无论成功或失败。传入XMLHttpRequest对象,以及一个包含成功或错误代码的字符串;

setting的取值如下:

参数 值类型 描述
accepts Map 内容类型发送请求头,告诉服务器什么样的响应会接受返回。
async Boolean 表示异步或同步请求。取值为true时为异步请求(默认),取值为false为同步请求。
beforeSend(XHR) Function 发送请求前可修改 XMLHttpRequest 对象的函数。XMLHttpRequest 对象是唯一的参数。如果返回false可以取消本次ajax请求。
cache Boolean (默认: true,dataType为script和jsonp时默认为false),设置为 false 将不缓存此页面。
complete(XHR, TS) Function 请求完成后回调函数 (请求成功或失败之后均调用)。参数: XMLHttpRequest 对象和一个描述成功请求类型的字符串。
contents Map 一个以"{字符串:正则表达式}"配对的对象,用来确定jQuery将如何解析响应,给定其内容类型。
contentType String 发送信息至服务器时内容编码类型。默认: "application/x-www-form-urlencoded"。
context Object 这个对象用于设置Ajax相关回调函数的上下文。
converters Map 一个数据类型对数据类型转换器的对象。每个转换器的值是一个函数,返回响应的转化值。默认: {"* text": window.String, "text html": true, "text json": jQuery.parseJSON, "text xml": jQuery.parseXML}
crossDomain Map 默认: 同域请求为false。跨域请求为true如果你想强制跨域请求(如JSONP形式)同一域,设置crossDomain为true。
data Object,String 发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。
dataFilter Function 给Ajax返回的原始数据的进行预处理的函数。提供data和type两个参数:data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数。
dataType String 预期服务器返回的数据类型。可用值有:xml、html、script、json、jsonp、text。
error Function 请求失败时调用此函数。
global Boolean (默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件。
headers Map 消息头。
ifModified Boolean 默认:为false,表示仅在服务器数据改变时获取新数据。
isLocal Map 默认值取决于当前的位置协议。允许当前环境被认定为“本地”,(如文件系统)。
jsonp String 在一个jsonp请求中重写回调函数的名字。
jsonpCallback String 为jsonp请求指定一个回调函数名。这个值将用来取代jQuery自动生成的随机函数名。
mimeType String 一个mime类型用来覆盖XHR的 MIME类型。
password String 用于响应HTTP访问认证请求的密码。
processData Boolean 通过data选项传递进来的数据是否被转换处理。默认为true。
scriptCharset String 只有当请求时dataType为"jsonp"或"script",并且type是"GET",才会用于强制修改charset。通常只在本地和远程的内容编码不同时使用。
statusCode Map 一组数值的HTTP代码和函数对象,当响应时调用了相应的代码。
success(data, textStatus, jqXHR) Function,Array 请求成功后的回调函数。
traditional Boolean 如果想要用传统的方式来序列化数据,那么就设置为true。
timeout Number 设置请求超时时间(毫秒)。
type String 请求方式有"POST" 和 "GET", 默认为 "GET"。
url String (默认: 当前页地址) 发送请求的地址。
username String 用于响应HTTP访问认证请求的用户名。
xhr Function 需要返回一个XMLHttpRequest 对象。默认在IE下是ActiveXObject 而其他情况下是XMLHttpRequest 。用于重写或者提供一个增强的XMLHttpRequest 对象。
xhrFields Map 一对“文件名-文件值”在本机设置XHR对象。例如,如果需要的话,你可以用它来设置withCredentials为true的跨域请求。

(2) load(url, [data], [callback])

载入远程 HTML 文件代码并插入至 DOM 中。参数如下:

  • url:待装入 HTML 网页网址。
  • data:发送至服务器的 key/value 数据。
  • callback:载入成功时回调函数。

实例:

$("#feeds").load("login.aspx", {limit: 25}, function(){
   // ...
 });

(3) $.get(url,[data],[fn],[type])

通过远程 HTTP GET 请求载入信息。这是一个简单的 GET 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。

实例:

$.get("login.aspx", { name: "John", time: "2pm" },
  function(data){
    // ...
  });

(4) $.getJSON(url,[data],[fn])

通过 HTTP GET 请求载入 JSON 数据。您可以通过使用JSONP形式的回调函数来加载其他网域的JSON数据,如 "myurl?callback=?"。jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。 注意:此行以后的代码将在这个回调函数执行前执行。

实例:

$.getJSON("test.js", { name: "John", time: "2pm" }, function(json){
  alert("JSON Data: " + json.users[3].name);
});

(5) $.getScript(url,[callback])

通过 HTTP GET 请求载入并执行一个 JavaScript 文件。可以跨域调用 JavaScript 文件。

实例:

$.getScript("test.js");

(6) $.post(url,[data],[fn],[type])

通过远程 HTTP POST 请求载入信息。这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。

实例:

$.post("login.aspx", { name: "John", time: "2pm" },
   function(data){
     // ...
   });

2. Ajax 事件

(1) ajaxComplete(callback)

AJAX 请求完成时执行函数。XMLHttpRequest 对象和设置作为参数传递给回调函数。

实例:

$("#msg").ajaxComplete(function(event,request, settings){
   $(this).append("<li>请求完成.</li>");
 });

(2) ajaxError(callback)

AJAX 请求发生错误时执行函数。XMLHttpRequest 对象和设置作为参数传递给回调函数。捕捉到的错误可作为最后一个参数传递。

实例:

$("#msg").ajaxError(function(event,request, settings){
     $(this).append("<li>出错页面:" + settings.url + "</li>");
});

(3) ajaxSend(callback)

AJAX 请求发送前执行函数。

(4) ajaxStart(callback)

AJAX 请求开始时执行函数。

(5) ajaxStop(callback)

AJAX 请求结束时执行函数。

(6) ajaxSuccess(callback)

AJAX 请求成功时执行函数。

3. 其它

(1) $.ajaxPrefilter([type],fn)

指定预先处理Ajax参数选项的回调函数。

(2) $.ajaxSetup([options])

设置全局 AJAX 默认选项。参数与 '$.ajax'相同。

(3) serialize()

序列表化表单内容为字符串。

(4) serializearray()

序列化表单元素(类似 '.serialize()' 方法) 返回 JSON 数据结构数据。此方法返回的是JSON对象而非JSON字符串。

二. jQuery的Ajax实现方法

1. $.get()

采用GET方式向服务器请求数据,并通过方法中回调函数的参数返回请求的数据。一般通过超链接的方式传递数据。

语法: $.get(url,[callback])

实例:

$.get("login.aspx?id=1&name=lemoo",function(data,status){
    alert("Data: " + data + "\nStatus: " + status);
  });

2. $.post()

post()方法多用于以POST方式向服务器发送数据,服务器接收到数据之后,进行处理,并将处理结果返回页面。

语法: $.post(url,[data],[callback])

实例:

$.post("login.aspx", {id: 1, name: lemoo}, function (data) {
  alert(data);
});

3. $.ajax

ajax()方法是最底层、功能最强大的请求服务器数据的方法,它不仅可以获取服务器返回的数据,还能向服务器发送请求并传递数值。

语法: $.ajax([settings])

实例:

$.ajax({
  type:"post",
  url:"login.aspx",
  data: {id: 1, name: lemoo},
  dataType:"text",
  success: function (data) {
    alert(data);
  }
});

4. getJSON()

使用getJSON()方法可以通过Ajax异步请求的方式,获取服务器中的数组,并对获取的数据进行解析。可以用$.each()来遍历数据。

语法: $.getJSON(url,[data],[callback])

实例:

$.getJSON("login.aspx",function(data){
  $.each(data, function (index, sport) {
    if(index==3)
      $("ul").append("<li>" + sport["name"] + "</li>");
  });
});

三. Ajax在Chrome浏览器下的调试

在运行Ajax的页面按F12进入控制台,进入“Network”选项卡,点击"XHR"过滤器,然后触发Ajax的事件,进入Ajax详情页。
此处输入图片的描述

  • Request URL:查看请求的地址;
  • Request Method:请求的方式,查看是GET或者POST,GET请求的参数一致的话会有缓存;
  • Status Code:返回状态码;

如果向后台发送数据,在“Headers”选项下还会有“Query String Parameters”目录,是向后台发送的数据,一般这里看参数是否有问题,格式及命名是否正确。

点击“Response”选项就可以查看服务器返回的数据了,一般在这里查看返回是否正常,格式是否正确。

此处输入图片的描述

本文作者:子匠_Zijor,转载请注明出处:http://www.dengzhr.com/js/jquery/579