$.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 实现,因此可以用它来代替前面的所有方法。