jQuery $.ajax方法

jQuery $.ajax方法

$.ajax() 方法是 jQuery 最底层的 Ajax 实现。

它的结构为:$.ajax(options)

该方法只有1个参数,但在这个对象里包含了 $.ajax() 方法所需要的请求设置以及回调函数等信息,参数以 key / value 的形式存在,所有参数都是可选的,常用参数如下表所示。

参数名称 类型 说明
url  String (默认为当前页地址)发送请求的地址
type  String 请求方式(POST或GET)默认为GET。注意其他HTTP请求方法,例如PUT
和DELETE也可以使用,但仅部分浏览器支持
timeout Number 设置请求超时时间(毫秒)。此设置将覆盖 $.ajaxSetUp() 方法的全局设置
data Object

String
发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。 GET
请求中将附加在URL后。防止这种自动转换,可以查看 processData 选项。对
象必须为 key/value 格式,例如{fool :"bar1", foo2 :"bar2"}转换为
&fool=bar1&foo2=bar2。如果是数组,jQuery将自动为不同值对应同一个名称。
例如{foo:["bar1","bar2"]}转换为 &foo=bar1&foo=bar2
dataType  String 预期服务器返回的数据类型。如果不指定,jQuery将自动根据HTTP包MIME
信息返回 responseXML 或 responseText,并作为回调函数参数传递。
可用的类型如下。
xml: 返回 XML 文档,可用 jQuery 处理。
html: 返回纯文本 HTML 信息;包含的 script 标签会在插入 DOM 时执行。
script: 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 cache 参数。
注意在远程请求时(不在同一个域下),所有 POST 请求都将转为GET请求。
json: 返回 JSON 数据。
jsonp: JSONP格式。使用 JSONP 形式调用函数时,例如myurl?callback=?,
jQuery将自动替换后一个"?"为正确的函数名,以执行回调函数。
text: 返回纯文本字符串
beforeSend  Function 发送请求則可以修改 XMLHttpRequest 对象的函数,例如添加自定义HTTP头。
在 beforeSend 中如果返回 false 可以取消本次 Ajax 请求。XMLHttpRequest 对
象是惟一的参数。
function (XMLHttpRequest) {
  this; //调用本次Ajax请求时传递的 options 参数
}
complete  Function 请求完成后调用的回调函数(请求成功或失败时均调用)。
参数:XMLHttpRequest 对象和一个描述成功请求类型的字符串。
function(XMLHttpRequest, textStatus) {
  this; //调用本次Ajax请求时传递的options参数
}
success  Function

请求成功后调用的回调函数,有两个参数。
(1) 由服务器返回,并根据dataType参数进行处理后的数据。
(2) 描述状态的字符串。 ,
function (data, textStatus) {
  //data 可能是 xmlDoc、jsonObj、html、 text 等等
  this; //调用本次Ajax请求时传递的options参数

}

error  Function 请求失败时被调用的函数。该函数有 3 个参数,即
XMLHttpRequest 对象、错误信息、捕获的错误对象(可选)。
Ajax 事件函数如下。
function (XMLHttpRequest, textStatus, errorThrown) {
  // 通常情况下 textStatus 和 errorThown 只有其中一个包含信息
  this; // 调用本次 Ajax 请求时传递的 options 参数
}
global  Boolean 默认为 true 。表示是否触发全局 Ajax 事件。设置为 false 将不会触发全局 Ajax
事件, AjaxStart 或 AjaxStop 可用于控制各种 Ajax 事件



如果需要使用 $.ajax() 方法来进行 Ajax 开发,那么上面这些常用的参数都必须了解。此外,$.ajax()方法还有其他参数。

前面用到的 $.load()、$.get()、$.post()、$.getScript() 和 $.getJSON() 这些方法,都是基于 $.ajax() 方法构建的,$.ajax() 方法是 jQuery 最底层的 Ajax 实现,因此可以用它来代替前面的所有方法。