jQuery.ajax( url [, settings ] )返回: jqXHR
描述: 执行一个异步 HTTP (Ajax) 请求。
-
版本添加: 1.5jQuery.ajax( url [, settings ] )
-
url类型: 字符串一个字符串,包含请求发送到的 URL。
-
settings类型: PlainObject一组键值对,用于配置 Ajax 请求。所有设置都是可选的。任何选项都可以通过 $.ajaxSetup() 设置默认值。有关所有设置的完整列表,请参阅下面的 jQuery.ajax( settings )。
-
-
版本添加: 1.0jQuery.ajax( [settings ] )
-
settings类型: PlainObject一组键值对,用于配置 Ajax 请求。所有设置都是可选的。任何选项都可以通过 $.ajaxSetup() 设置默认值。
-
accepts (默认:
取决于 dataType)类型: PlainObject一组键值对,将给定的dataType映射到其 MIME 类型,该类型会发送在Accept请求头中。此头告诉服务器它可以接受哪种类型的响应。例如,以下定义了一个自定义类型mycustomtype,将随请求发送注意: 您需要为该类型在12345678910111213141516$.ajax({accepts: {mycustomtype: 'application/x-some-custom-type'},// Instructions for how to deserialize a `mycustomtype`converters: {'text mycustomtype': function(result) {// Do Stuffreturn newresult;}},// Expect a `mycustomtype` back from serverdataType: 'mycustomtype'});converters中指定一个对应的条目,以便正常工作。 -
async (默认:
true)类型: 布尔值默认情况下,所有请求都以异步方式发送(即,默认设置为true)。如果您需要同步请求,请将此选项设置为false。跨域请求和dataType: "jsonp"请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,阻止任何操作,直到请求激活。从 jQuery 1.8 开始,使用 jqXHR ($.Deferred) 的async: false已弃用;您必须使用 success/error/complete 回调选项,而不是 jqXHR 对象的相应方法,例如jqXHR.done()。 -
beforeSend一个请求前回调函数,可以在发送 jqXHR (在 jQuery 1.4.x 中是 XMLHTTPRequest) 对象之前修改它。使用此函数设置自定义请求头等。jqXHR 和 settings 对象作为参数传递。这是一个 Ajax 事件。在
beforeSend函数中返回false将取消请求。从 jQuery 1.5 开始,无论请求类型如何,都会调用beforeSend选项。 -
cache (默认:
true, 对于 dataType 'script' 和 'jsonp' 为 false)类型: 布尔值如果设置为false,将强制浏览器不缓存请求的页面。注意: 将cache设置为 false 仅在 HEAD 和 GET 请求中有效。它通过在 GET 参数后附加 "_={timestamp}" 来实现。其他类型的请求不需要此参数,除了 IE8 中 POST 请求到已通过 GET 请求过的 URL。 -
complete请求完成时(在
success和error回调执行后)调用的函数。该函数接收两个参数:jqXHR (在 jQuery 1.4.x 中是 XMLHTTPRequest) 对象,以及一个对请求状态进行分类的字符串("success","notmodified","nocontent","error","timeout","abort", 或"parsererror")。从 jQuery 1.5 开始,complete设置可以接受一个函数数组。每个函数将按顺序调用。这是一个 Ajax 事件。 -
contents类型: PlainObject一组字符串/正则表达式对,用于确定 jQuery 如何解析响应,具体取决于其内容类型。 (版本添加: 1.5)
-
contentType (默认:
'application/x-www-form-urlencoded; charset=UTF-8')发送数据到服务器时,使用此内容类型。默认是 "application/x-www-form-urlencoded; charset=UTF-8",这对于大多数情况都足够了。如果您显式地向$.ajax()传递了 content-type,那么它总是会发送到服务器(即使没有发送任何数据)。从 jQuery 1.6 开始,您可以传递false来告诉 jQuery 不设置任何 content type 头。注意: W3C XMLHttpRequest 规范规定 charset 始终为 UTF-8;指定其他 charset 不会强制浏览器更改编码。注意: 对于跨域请求,将 content type 设置为application/x-www-form-urlencoded,multipart/form-data, 或text/plain以外的任何值都会触发浏览器向服务器发送一个预检 OPTIONS 请求。 -
context (上下文)类型: PlainObject此对象将是所有 Ajax 相关回调的上下文。默认情况下,上下文是一个对象,代表调用中使用的 Ajax 设置(
$.ajaxSettings与传递给$.ajax的设置合并)。例如,将 DOM 元素指定为上下文将使其成为请求complete回调的上下文,如下所示123456$.ajax({url: "test.html",context: document.body}).done(function() {$( this ).addClass( "done" );}); -
converters (默认:
{"* text": window.String, "text html": true, "text json": jQuery.parseJSON, "text xml": jQuery.parseXML})类型: PlainObject一个包含 dataType 到 dataType 转换器的对象。每个转换器的值都是一个函数,它返回响应的转换值。 (版本添加: 1.5) -
crossDomain (默认:
同域请求为 false,跨域请求为 true)类型: 布尔值如果您希望在同域上强制执行跨域请求(如 JSONP),请将 crossDomain 的值设置为true。这允许例如服务器端重定向到另一个域。 (版本添加: 1.5) -
data
要发送到服务器的数据。如果 HTTP 方法是不能带有实体体的(例如 GET),则
data将附加到 URL 中。当
data是一个对象时,jQuery 会从对象的键值对生成数据字符串,除非processData选项设置为false。例如,{ a: "bc", d: "e,f" }将转换为字符串"a=bc&d=e%2Cf"。如果值是数组,jQuery 会根据traditional设置(如下所述)的值来序列化具有相同键的多个值。例如,使用默认的traditional: false设置,{ a: [1,2] }将变成字符串"a%5B%5D=1&a%5B%5D=2"。当
data作为字符串传递时,它应该已经编码,符合contentType的正确编码,默认是application/x-www-form-urlencoded。在
dataType: "json"或dataType: "jsonp"的请求中,如果字符串在 URL 中包含双问号 (??) 或在查询字符串中包含单个问号 (?),它将被 jQuery 为页面上的每个库副本生成的唯一值替换(例如jQuery21406515378922229067_1479880736745)。 -
dataFilter用于处理 XMLHttpRequest 的原始响应数据的函数。这是一个预处理函数,用于清理响应。您应该返回已清理的数据。该函数接受两个参数:服务器返回的原始数据和 'dataType' 参数。
-
dataType (默认:
智能猜测 (xml, json, script, or html))类型: 字符串您期望从服务器返回的数据类型。如果没有指定,jQuery 将尝试根据响应的 MIME 类型推断它(XML MIME 类型将产生 XML,1.4 版本中的 JSON 将产生 JavaScript 对象,1.4 版本中的 script 将执行脚本,其他任何内容都将作为字符串返回)。可用类型(以及传递给 success 回调的第一个参数)为-
"xml": 返回一个可以通过 jQuery 处理的 XML 文档。 -
"html": 返回纯文本形式的 HTML;在插入 DOM 时会计算其中包含的脚本标签。 -
"script": 将响应评估为 JavaScript 并将其作为纯文本返回。通过将查询字符串参数_=[TIMESTAMP]附加到 URL 来禁用缓存,除非cache选项设置为true。注意: 这会将 POST 请求转换为 GET 请求,用于远程域请求。在 jQuery 3.5.0 之前,具有脚本Content-Type的不成功 HTTP 响应仍会被执行。 -
"json": 将响应评估为 JSON 并返回一个 JavaScript 对象。跨域"json"请求,如果包含回调占位符,例如?callback=?,将使用 JSONP 来执行,除非请求在其请求选项中包含jsonp: false。JSON 数据被严格解析;任何格式错误的 JSON 都将被拒绝并抛出解析错误。从 jQuery 1.9 开始,空响应也将被拒绝;服务器应返回null或{}。 (有关正确 JSON 格式的更多信息,请参阅 json.org)。 -
"jsonp": 使用 JSONP 加载 JSON 块。在 URL 末尾添加额外的"?callback=?"来指定回调。通过将查询字符串参数"_=[TIMESTAMP]"附加到 URL 来禁用缓存,除非cache选项设置为true。 -
"text": 一个纯文本字符串。 - 多个,空格分隔的值:从 jQuery 1.5 开始,jQuery 可以将从 Content-Type 头接收到的 dataType 转换为您需要的类型。例如,如果您希望将文本响应作为 XML 处理,请为 dataType 使用
"text xml"。您还可以发出一个 JSONP 请求,将其作为文本接收,然后由 jQuery 解释为 XML:"jsonp text xml"。类似地,诸如"jsonp xml"这样的简写字符串将首先尝试从 jsonp 转换为 xml,如果失败,则从 jsonp 转换为 text,然后从 text 转换为 xml。
-
-
error如果请求失败时调用的函数。该函数接收三个参数:jqXHR (在 jQuery 1.4.x 中是 XMLHttpRequest) 对象,一个描述发生的错误类型的字符串,以及一个可选的异常对象(如果发生)。第二个参数的可能值(除了
null)是"timeout","error","abort", 和"parsererror"。当发生 HTTP 错误时,errorThrown接收 HTTP 状态的文本部分,例如 "Not Found" 或 "Internal Server Error"。(在 HTTP/2 中可能为空字符串)从 jQuery 1.5 开始,error设置可以接受一个函数数组。每个函数都将按顺序调用。注意: *此处理程序不用于跨域脚本和跨域 JSONP 请求。* 这是一个 Ajax 事件。 -
global (默认:
true)类型: 布尔值 -
headers (默认:
{})类型: PlainObject与使用 XMLHttpRequest 传输的请求一起发送的其他请求头键值对。始终添加X-Requested-With: XMLHttpRequest请求头,但其默认的XMLHttpRequest值可以在此处更改。headers设置中的值也可以在beforeSend函数中覆盖。 (版本添加: 1.5) -
ifModified (默认:
false)类型: 布尔值仅当响应自上次请求以来发生更改时,才允许请求成功。这是通过检查 Last-Modified 头来实现的。默认值是false,忽略该头。在 jQuery 1.4 中,此技术还检查服务器指定的 'etag' 来捕获未修改的数据。 -
isLocal (默认:
取决于当前位置协议)类型: 布尔值允许将当前环境识别为 "本地"(例如文件系统),即使 jQuery 默认不这样识别。目前识别为本地的协议包括:file,*-extension, 和widget。如果需要修改isLocal设置,建议在$.ajaxSetup()方法中一次性完成。 (版本添加: 1.5.1) -
jsonp覆盖 JSONP 请求中的回调函数名称。此值将用于替换 URL 查询字符串中的 'callback',而不是 'callback=?'。因此,
{jsonp:'onJSONPLoad'}将导致向服务器传递'onJSONPLoad=?'。从 jQuery 1.5 开始,将jsonp选项设置为false可阻止 jQuery 向 URL 添加 "?callback" 字符串或尝试使用 "=?" 进行转换。在这种情况下,您还应该显式设置jsonpCallback设置。例如,{ jsonp: false, jsonpCallback: "callbackName" }。如果您不信任 Ajax 请求的目标,出于安全原因,请考虑将jsonp属性设置为false。 -
jsonpCallback为 JSONP 请求指定回调函数名称。此值将用于替换 jQuery 自动生成的随机名称。最好让 jQuery 生成唯一的名称,因为它将使请求管理、提供回调和错误处理更加容易。当您想为 GET 请求启用更好的浏览器缓存时,可能需要指定回调。从 jQuery 1.5 开始,您也可以为此设置使用函数,在这种情况下,
jsonpCallback的值将设置为该函数的返回值。 -
method (默认:
'GET')类型: 字符串 -
mimeType类型: 字符串用于覆盖 XHR mime 类型的 mime 类型。 (版本添加: 1.5.1)
-
password类型: 字符串在响应 HTTP 访问身份验证请求时,用于 XMLHttpRequest 的密码。
-
processData (默认:
true)类型: 布尔值默认情况下,传递给data选项的对象(严格来说,任何非字符串)将被处理并转换为查询字符串,符合默认内容类型 "application/x-www-form-urlencoded"。如果您想发送 DOMDocument 或其他未处理的数据,请将此选项设置为false。 -
scriptAttrs类型: PlainObject定义一个对象,其中包含用于 "script" 或 "jsonp" 请求的附加属性。键表示属性的名称,值是属性的值。如果提供了此对象,它将强制使用脚本标签传输。例如,这可以用于设置
nonce,integrity, 或crossorigin属性,以满足内容安全策略要求。 (版本添加: 3.4) -
scriptCharset类型: 字符串仅在 "script" 传输使用时适用。设置请求中使用的脚本标签上的
charset属性。当本地页面的字符集与远程脚本的字符集不同时使用。或者,可以在scriptAttrs中指定charset属性,这也将确保使用 "script" 传输。 -
statusCode (默认:
{})类型: PlainObject当响应具有相应代码时调用的数值 HTTP 状态码和函数的对象。例如,以下代码将在响应状态为 404 时触发警报
1234567$.ajax({statusCode: {404: function() {alert( "page not found" );}}});如果请求成功,状态码函数接收与 success 回调相同的参数;如果导致错误(包括重定向到另一个域的 3xx),则接收与
(版本添加: 1.5)error回调相同的参数。重定向到同一域的 3xx 由浏览器处理,不受 jQuery 控制。 -
success如果请求成功时调用的函数。该函数接收三个参数:从服务器返回的数据,格式化为
dataType参数或dataFilter回调函数(如果已指定);描述状态的字符串;以及jqXHR(在 jQuery 1.4.x 中是 XMLHttpRequest) 对象。从 jQuery 1.5 开始,success 设置可以接受一个函数数组。每个函数将按顺序调用。 这是一个 Ajax 事件。 -
timeout类型: Number设置请求的超时时间(以毫秒为单位)。值为 0 表示没有超时。这将覆盖使用 $.ajaxSetup() 设置的任何全局超时。超时期限从发出
$.ajax调用开始;如果有其他请求正在进行而浏览器没有可用连接,则请求可能会在发送之前超时。在 jQuery 1.4.x 及更早版本中,如果请求超时,XMLHttpRequest 对象将处于无效状态;访问任何对象成员都可能引发异常。仅在 Firefox 3.0+ 中,脚本和 JSONP 请求无法通过超时取消;即使脚本在超时期限后到达,也会运行。 -
traditional类型: 布尔值如果您希望使用传统的 param 序列化样式,请将其设置为
true。 -
type (默认:
'GET')类型: 字符串method的别名。如果您使用的是 jQuery 1.9.0 之前的版本,应使用type。 -
url (默认:
当前页面)类型: 字符串一个字符串,包含请求发送到的 URL。 -
username类型: 字符串在响应 HTTP 访问身份验证请求时,用于 XMLHttpRequest 的用户名。
-
xhr (默认:
可用时为 ActiveXObject (IE),否则为 XMLHttpRequest)类型:Function()创建 XMLHttpRequest 对象的 callback。默认为可用时为 ActiveXObject (IE),否则为 XMLHttpRequest。重写此项可提供自己的 XMLHttpRequest 实现或增强工厂。 -
xhrFields类型: PlainObject
在原生
XHR对象上设置的 fieldName-fieldValue 对的对象。例如,您可以根据需要将其设置为withCredentials为true以进行跨域请求。123456$.ajax({url: a_cross_domain_url,xhrFields: {withCredentials: true}});在 jQuery 1.5 中,
(版本添加: 1.5.1)withCredentials属性未传播到原生XHR,因此需要它的 CORS 请求将忽略此标志。因此,如果需要使用它,我们建议使用 jQuery 1.5.1+。
-
-
$.ajax() 函数是 jQuery 发送所有 Ajax 请求的基础。通常没有必要直接调用此函数,因为有几个更高级别的替代方法,如 $.get() 和 .load(),它们更容易使用。然而,如果需要不常见的选项,$.ajax() 可以更灵活地使用。
最简单的方式是调用 $.ajax() 函数,不带任何参数
|
1
|
|
注意: 默认设置可以通过使用 $.ajaxSetup() 函数来全局设置。
这个例子使用无选项加载当前页面的内容,但不对结果做任何处理。要使用结果,您可以实现其中一个回调函数。
jqXHR 对象
jQuery XMLHttpRequest (jqXHR) 对象,从 jQuery 1.5 开始由 $.ajax() 返回,是浏览器原生 XMLHttpRequest 对象的超集。例如,它包含 responseText 和 responseXML 属性,以及 getResponseHeader() 方法。当传输机制不是 XMLHttpRequest 时(例如,JSONP 请求的脚本标签),jqXHR 对象会尽可能模拟原生 XHR 功能。
从 jQuery 1.5.1 开始,jqXHR 对象还包含 overrideMimeType() 方法(在 jQuery 1.4.x 中也可用,但在 jQuery 1.5 中暂时移除)。.overrideMimeType() 方法可以在 beforeSend() 回调函数中使用,例如,修改响应 content-type 头
|
1
2
3
4
5
6
7
8
9
10
11
|
|
从 jQuery 1.5 开始,由 $.ajax() 返回的 jqXHR 对象实现了 Promise 接口,使其拥有 Promise 的所有属性、方法和行为(有关更多信息,请参阅 Deferred object)。这些方法接受一个或多个函数参数,当 $.ajax() 请求终止时调用它们。这允许您为单个请求分配多个回调,甚至在请求可能已完成之后分配回调。(如果请求已完成,则立即触发回调。)jqXHR 对象可用的 Promise 方法包括
-
jqXHR.done(function( data, textStatus, jqXHR ) {});
success 回调选项的替代结构,有关实现细节请参阅
deferred.done()。 -
jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});
error 回调选项的替代结构,
.fail()方法取代了已弃用的.error()方法。有关实现细节请参阅deferred.fail()。 -
jqXHR.always(function( data|jqXHR, textStatus, jqXHR|errorThrown ) { }); (jQuery 1.6 中添加)
complete 回调选项的替代结构,
.always()方法取代了已弃用的.complete()方法。对于成功请求的响应,函数的参数与
.done()的参数相同:data, textStatus,以及 jqXHR 对象。对于失败的请求,参数与.fail()的参数相同:jqXHR 对象, textStatus,以及 errorThrown。有关实现细节请参阅deferred.always()。 -
jqXHR.then(function( data, textStatus, jqXHR ) {}, function( jqXHR, textStatus, errorThrown ) {});
结合了
.done()和.fail()方法的功能,允许(从 jQuery 1.8 开始)操作底层 Promise。有关实现细节请参阅deferred.then()。
弃用通知: jqXHR.success(), jqXHR.error(), 和 jqXHR.complete() 回调在 jQuery 3.0 中被移除。您可以使用 jqXHR.done(), jqXHR.fail(), 和 jqXHR.always() 代替。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
|
所有回调中的 this 引用是传递给 $.ajax 的 context 选项的对象;如果未指定 context,则 this 是对 Ajax 设置本身的引用。
为了向后兼容 XMLHttpRequest,jqXHR 对象将公开以下属性和方法
-
readyState -
responseXML和/或responseText,当底层请求分别响应 xml 和/或 text 时 -
status -
statusText(在 HTTP/2 中可能为空字符串) -
abort( [ statusText ] ) -
getAllResponseHeaders()作为字符串 -
getResponseHeader( name ) -
overrideMimeType( mimeType ) -
setRequestHeader( name, value ),此方法与标准不同,它用新值替换旧值,而不是将新值连接到旧值 -
statusCode( callbacksByStatusCode )
不提供 onreadystatechange 机制,因为 done, fail, always, 和 statusCode 涵盖了所有可能的需求。
回调函数队列
beforeSend, error, dataFilter, success 和 complete 选项都接受在适当时候调用的回调函数。
从 jQuery 1.5 开始,fail 和 done,以及从 jQuery 1.6 开始的 always 回调钩子是先进先出(FIFO)管理的队列,允许每个钩子有多个回调。有关这些 $.ajax() 回调钩子内部实现的 Deferred object 方法。
$.ajax() 提供的回调钩子如下
-
调用
beforeSend回调选项;它接收jqXHR对象和settings对象作为参数。 -
如果请求失败,则调用
error回调选项。它接收jqXHR、指示错误类型的字符串,以及异常对象(如果适用)。一些内置错误将提供一个字符串作为异常对象:“abort”, “timeout”, “No Transport”。 -
立即成功接收响应数据后,调用
dataFilter回调选项。它接收返回的数据和dataType的值,并且必须返回传递给success的(可能已修改的)数据。 -
如果请求成功,则调用
success回调选项。它接收返回的数据、包含成功代码的字符串,以及jqXHR对象。 -
调用 Promise 回调 —
.done(),.fail(),.always(), 和.then()— 按其注册顺序调用。 -
complete回调选项在请求完成时触发,无论成功还是失败。它接收jqXHR对象以及包含成功或错误代码的字符串。
数据类型
$.ajax() 调用返回的不同类型响应在传递给 success handler 之前会经过不同类型的预处理。预处理的类型默认取决于响应的 Content-Type,但可以使用 dataType 选项显式设置。如果提供了 dataType 选项,则会忽略响应的 Content-Type 头。
可用数据类型为 text, html, xml, json, jsonp, 和 script。
如果指定了 text 或 html,则不进行预处理。数据将直接传递给 success handler,并通过 jqXHR 对象的 responseText 属性可用。
如果指定了 xml,则响应将使用 jQuery.parseXML 进行解析,然后作为 XMLDocument 传递给 success handler。XML 文档可通过 jqXHR 对象的 responseXML 属性获得。
如果指定了 json,则响应将使用 jQuery.parseJSON 进行解析,然后作为对象传递给 success handler。解析后的 JSON 对象可通过 jqXHR 对象的 responseJSON 属性获得。
如果指定了 script,$.ajax() 将执行从服务器接收到的 JavaScript,然后将其作为字符串传递给 success handler。
如果指定了 jsonp,$.ajax() 将自动在 URL 末尾附加一个查询字符串参数(默认是)callback=?。传递给 $.ajax() 的设置的 jsonp 和 jsonpCallback 属性可用于分别指定查询字符串参数的名称和 JSONP 回调函数的名称。服务器应返回有效的 JavaScript,将 JSON 响应传递给回调函数。$.ajax() 将执行返回的 JavaScript,调用 JSONP 回调函数,然后将响应中包含的 JSON 对象传递给 $.ajax() success handler。
有关 JSONP 的更多信息,请参阅 最初的详细介绍其用法的帖子。
将数据发送到服务器
默认情况下,Ajax 请求使用 GET HTTP 方法发送。如果需要 POST 方法,可以通过设置 type 选项的值来指定。此选项影响 data 选项的内容如何发送到服务器。根据 W3C XMLHTTPRequest 标准,POST 数据将始终使用 UTF-8 字符集传输到服务器。
data 选项可以包含 key1=value1&key2=value2 形式的查询字符串,或者 {key1: 'value1', key2: 'value2'} 形式的对象。如果使用后一种形式,数据将使用 jQuery.param() 转换为查询字符串,然后发送。可以通过将 processData 设置为 false 来规避此处理。如果您希望将 XML 对象发送到服务器,此处理可能不希望,在这种情况下,请将 contentType 选项从 application/x-www-form-urlencoded 更改为更合适的 MIME 类型。
高级选项
global 选项可阻止为 ajaxSend, ajaxError 和类似事件注册的处理程序在请求触发它们时触发。这可以用于,例如,如果您发送的请求频繁且短暂,则使用 ajaxSend 处理程序实现的加载指示器。对于跨域脚本和 JSONP 请求,global 选项会自动设置为 false。有关详细信息,请参阅下面这些方法的说明。
如果服务器在提供响应之前执行 HTTP 身份验证,则可以通过 username 和 password 选项发送用户名和密码对。
Ajax 请求是有限时的,因此可以捕获和处理错误以提供更好的用户体验。请求超时通常要么保持默认值,要么使用 $.ajaxSetup() 设置为全局默认值,而不是使用 timeout 选项为特定请求覆盖。
默认情况下,请求总是发出的,但浏览器可能会从其缓存中提供结果。要禁止使用缓存的结果,请将 cache 设置为 false。要使请求在自上次请求以来资产未被修改时报告失败,请将 ifModified 设置为 true。
scriptCharset 允许为使用 <script> 标签的请求(即,类型为 script 或 jsonp)显式指定字符集。如果脚本和宿主页面具有不同的字符集,这很有用。
Ajax 中的第一个字母代表“异步”,这意味着操作是并行发生的,并且完成顺序不能保证。$.ajax() 的 async 选项默认为 true,表示代码执行可以在请求发出后继续。强烈建议不要将此选项设置为 false(从而使调用不再是异步的),因为它可能导致浏览器无响应。
$.ajax() 函数返回它创建的 XMLHttpRequest 对象。通常 jQuery 在内部处理此对象的创建,但可以使用 xhr 选项指定一个用于生成对象的自定义函数。返回的对象通常可以被忽略,但它提供了观察和操作请求的较低级接口。特别是,调用对象上的 .abort() 可以停止请求,直到它完成。
扩展 Ajax
从 jQuery 1.5 开始,jQuery 的 Ajax 实现包括 prefilters, transports, 和 converters,它们允许您以极大的灵活性扩展 Ajax。
使用转换器
$.ajax() 转换器支持将数据类型映射到其他数据类型。但是,如果您想将自定义数据类型映射到已知类型(例如 json),则必须使用 contents 选项在响应 Content-Type 和实际数据类型之间建立对应关系
|
1
2
3
4
5
6
7
8
9
10
11
|
|
此附加对象是必需的,因为响应 Content-Types 和数据类型之间从未存在严格的一对一对应关系(因此使用了正则表达式)。
要从支持的类型(例如 text, json)转换为自定义数据类型并返回,请使用另一个直通转换器
|
1
2
3
4
5
6
7
8
9
10
11
12
|
|
上面的代码现在允许从 text 转换为 mycustomtype,然后从 mycustomtype 转换为 json。
附加说明
- 由于浏览器安全限制,大多数“Ajax”请求都受 同源策略的约束;请求无法成功从不同的域、子域、端口或协议检索数据。
- 脚本和 JSONP 请求不受同源策略限制。
示例
示例 1
将一些数据保存到服务器,并在完成后通知用户。
|
1
2
3
4
5
6
7
8
|
|
示例 2
检索 HTML 页面的最新版本。
|
1
2
3
4
5
6
7
|
|
示例 3
将 xml 文档作为数据发送到服务器。通过将 processData 选项设置为 false,可以阻止数据自动转换为字符串。
|
1
2
3
4
5
6
7
8
|
|
示例 4
将 id 作为数据发送到服务器,将一些数据保存到服务器,并在完成后通知用户。如果请求失败,则向用户发出警报。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
|
示例 5
加载并执行 JavaScript 文件。
|
1
2
3
4
5
|
|