jQuery学习和Ajax怎么学习

全局Ajax事件处理程序
1.3 版本弃用的 API
1.7 版本弃用的 API
1.8 版本弃用的 API
1.9 版本弃用的 API
1.10 版本弃用的 API
3.0 版本弃用的 API
浏览器事件
DOM 插入并包裹现有内容
DOM 插入现有元素内
DOM 插入现有元素外
Style 属性
DOM 元素方法
对象实例特性
全局jQuery 对象特性
子元素筛选
可见性筛选
其他前端文档
jQuery.ajax( url [, settings ] )返回:
说明: 执行一个异步的HTTP(Ajax)的请求。
添加的版本: jQuery.ajax( url [, settings ] )
一个用来包含发送请求的URL字符串。
一个以"{键:值}"组成的AJAX 请求设置。所有选项都是可选的。可以使用设置任何默认参数。看下所有设置的完整列表。
添加的版本: jQuery.ajax(
[settings ] )
一个以"{键:值}"组成的AJAX 请求设置。所有选项都是可选的。可以使用设置任何默认参数。
accepts (默认: 取决于数据类型)
一个键/值对集合映射给定的dataType 到其的MIME类型,它可以从发送Accept请求头信息中获得。
请求头信息通知服务器该请求需要接收何种类型的返回结果。
例如,下面定义一个自定义类型的mycustomtype与请求一起发送:
accepts: {
mycustomtype: 'application/x-some-custom-type'
converters: {
'text mycustomtype': function(result) {
dataType: 'mycustomtype'});
对于这种类型,为了使其正常工作,您将需要在converters中指定补充项。
async (默认: true)
默认设置下,所有请求均为异步请求(也就是说这是默认设置为 true
)。如果需要发送同步请求,请将此选项设置为 false 。跨域请求和 dataType: "jsonp"
请求不支持同步操作。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。从 jQuery 1.8 开始, jqXHR ($.Deferred)中使用
async: false
已经过时。您必须使用的 success/error/complete 的回调选项代替相应的jqXHR对象的方法,比如jqXHR.done() 或者过时的jqXHR.success()。
beforeSend
settings )
请求发送前的回调函数,用来修改请求发送前jqXHR(在jQuery 1.4.x的中,XMLHttpRequest)对象,此功能用来设置自定义 HTTP 头信息,等等。该jqXHR和设置对象作为参数传递。这是一个 。在beforeSend函数中返回false将取消这个请求。从jQuery 1.5开始, beforeSend选项将被访问,不管请求的类型。
cache (默认: true, dataType为"script"和"jsonp"时默认为false)
如果设置为 false ,浏览器将不缓存此页面。注意: 设置cache为 false将在 HEAD和GET请求中正常工作。它的工作原理是在GET请求参数中附加"_={timestamp}"(译者注:时间戳)。该参数不是其他请求所必须的,除了在IE8中,当一个POST请求一个已经用GET请求过的URL。
textStatus )
请求完成后回调函数 (请求success 和 error之后均调用)。这个回调函数得到2个参数: jqXHR (在 jQuery 1.4.x中是 XMLHTTPRequest) 对象和一个描述请求状态的字符串("success", "notmodified", "nocontent","error", "timeout", "abort", 或者 "parsererror") 。从jQuery 1.5开始, complete设置可以接受一个函数的数组。每个函数将被依次调用。这是一个 。
一个以"{字符串/正则表达式}"配对的对象,根据给定的内容类型,解析请求的返回结果。 (新增)
contentType (default: 'application/x-www-form- charset=UTF-8')
当将数据发送到服务器时,使用该内容类型。默认值是"application/x-www-form- charset=UTF-8",适合大多数情况。如果你明确地传递了一个内容类型(Content-Type)给 $.ajax(),那么他总是会发送给服务器(即使没有数据要发送)。从 jQuery 1.6 开始,你可以传递false来告诉jQuery,没有设置任何内容类型头信息。 注意:W3C的XMLHttpRequest的规范规定,数据将总是使用UTF-8字符集传递给服务器;指定其他字符集无法强制浏览器更改编码。
注意:对于跨域请求,内容类型设置为application/x-www-form-urlencoded, multipart/form-data, 或 text/plain以外, 将触发浏览器发送一个预检OPTIONS请求到服务器。
这个对象用于设置Ajax相关回调函数的上下文。
默认情况下,这个上下文是一个ajax请求使用的参数设置对象,($.ajaxSettings合并独傲这个设置,传递给$.ajax)。比如指定一个DOM元素作为context参数,这样就设置了complete回调函数的上下文为这个DOM元素。就像这样:
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})
一个数据类型到数据类型转换器的对象。每个转换器的值是一个函数,返回经转换后的请求结果。
crossDomain (默认: 同域请求为false, 跨域请求为true)
如果你想在同一域中强制跨域请求(如JSONP形式),例如,想服务器端重定向到另一个域,那么需要将crossDomain设置为 true 。 (
发送到服务器的数据。它被转换成一个查询字符串,如果已经是一个字符串的话就不会转换。查询字符串将被追加到GET请求的URL后面。参见 processData
选项说明,以防止这种自动转换。对象必须为"{键:值}"格式。如果这个参数是一个数组,jQuery会按照traditional 参数的值, 将自动转化为一个同名的多值查询字符串(查看下面的说明)。愚人码头注:如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。(感谢 提供的翻译建议。)
dataFilter
一个函数被用来处理XMLHttpRequest的原始响应数据。这是一个预过滤功能,净化响应。您应该返回安全数据。提供data和type两个参数:data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数。
dataType (default: Intelligent Guess (xml, json, script, or html))
从服务器返回你期望的数据类型。
如果没有指定,jQuery将尝试通过MIME类型的响应信息来智能判断(一个XML MIME类型就被识别为XML,在1.4中 JSON将生成一个JavaScript对象,在1.4中 script 将执行该脚本,其他任何类型会返回一个字符串)。 可用的类型(以及结果作为第一个参数传递给成功回调函数)有:
"xml": 返回 XML 文档,可以通过 jQuery 处理。
"html": 返回纯文本 HTML 文本;包含的script标签会在插入DOM时执行。
"script": 把响应的结果当作 JavaScript 执行,并将其当作纯文本返回。默认情况下会通过在URL中附加查询字符串变量 ,_=[TIMESTAMP], 禁用缓存结果,除非设置了cache参数为true。注意: 在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(愚人码头注:因为将使用DOM的script标签来加载)
"json":把响应的结果当作 JSON 执行,并返回一个JavaScript对象。跨域"json" 请求转换为"jsonp",除非该请求在其请求选项中设置了jsonp:false。JSON 数据以严格的方式解析; 任何畸形的JSON将被拒绝,并且抛出解析错误信息。在jQuery1.9中,一个空响应也将被拒绝;服务器应该返回null或 {}响应代替。(见的更多信息,正确的JSON格式。)
"jsonp": 以
的方式载入 JSON 数据块。会自动在所请求的URL最后添加"?callback=?"。默认情况下会通过在URL中附加查询字符串变量 ,_=[TIMESTAMP], 禁用缓存结果,除非设置了cache参数为true。
"text": 返回纯文本字符串。
多个用空格分割的值:从 jQuery 1.5 开始,
jQuery可以内容类型(Content-Type)头收到并转换一个您需要的数据类型。例如,如果你想要一个文本响应为XML处理,使用"text xml"数据类型。您也可以将一个JSONP的请求,以文本形式接受,并用jQuery以XML解析: "jsonp text xml"。同样地可以使用"jsonp xml"简写,首先会尝试从 jsonp 到 xml 的转换,如果转换失败,就先将 jsonp 转换成 text, 然后再由 text 转换成 xml。
textStatus,
errorThrown )
请求失败时调用此函数。有以下三个参数:jqXHR (在 jQuery 1.4.x前为XMLHttpRequest) 对象、描述发生错误类型的一个字符串 和 捕获的异常对象。如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能是"timeout", "error", "abort" ,和 "parsererror"。
当一个HTTP错误发生时,errorThrown 接收HTTP状态的文本部分,比如: "Not Found"(没有找到) 或者 "Internal Server Error."(服务器内部错误)。 从jQuery 1.5开始, 在error设置可以接受函数组成的数组。每个函数将被依次调用。
注意:此处理程序在跨域脚本和JSONP形式的请求时不被调用。这是一个 。
global (默认: true)
无论怎么样这个请求将触发全局AJAX事件处理程序。默认是true 。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或者 ajaxStop。这可以用来控制各种 .
headers (默认: {})
一个额外的"{键:值}"对映射到请求一起发送。此设置会在beforeSend 函数调用之前被设置 ;因此,请求头中的设置值,会被beforeSend
函数内的设置覆盖 。
ifModified (默认: false)
只有上次请求响应改变时,才允许请求成功。使用 HTTP 包 Last-Modified 头信息判断。默认值是false,忽略HTTP头信息。在jQuery 1.4中,他也会检查服务器指定的'etag'来确定数据没有被修改过。
isLocal (默认: 取决于当前的位置协议)
允许当前环境被认定为“本地”,(如文件系统),即使jQuery默认情况下不会这么做。以下协议目前公认为本地:file, *-extension, and widget。如果isLocal设置需要修改,建议在$.ajaxSetup()方法中这样做一次。
在一个JSONP请求中重写回调函数的名字。这个值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,比如{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。在jQuery 1.5,,设置jsonp选项为false,阻止了jQuery从加入"?callback"字符串的URL或试图使用"=?"转换。在这种情况下,你也应该明确设置jsonpCallback设置。例如, { jsonp: false, jsonpCallback: "callbackName" }。如果你不信任你的Ajax请求的目标,出于安全原因,
考虑 设置jsonp 属性为false。
jsonpCallback
为jsonp请求指定一个回调函数名。这个值将用来取代jQuery自动生成的随机函数名。这主要用来让jQuery生成一个独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。你也可以在想让浏览器缓存GET请求的时候,指定这个回调函数名。从jQuery 1.5开始,你也可以使用一个函数作为该参数设置,在这种情况下,该函数的返回值就是jsonpCallback的结果。
method (default: 'GET')
HTTP 请求方法 (比如:"POST", "GET
", "PUT")。 (添加版本: )。(愚人码头注:如果你使用jQuery 1.9.0 之前的版本,你需要使用type选项。)
一个mime类型用来覆盖XHR的 MIME类型。 ( 新增 )
用于响应HTTP访问认证请求的密码
processData (默认: true)
默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型
"application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。
scriptCharset
仅适用于当"script"传输使用时(例如,跨域的"jsonp"或 dataType选项为"script" 和 "GET"类型)。请求中使用在script标签上设置charset 属性。通常只在本地和远程的内容编码不同时使用。
statusCode (默认: {})
一个 HTTP响应状态码 和 当请求响应相应的状态码时执行的函数 组成的对象。例如: 下面的代码将在http响应状态码为404时弹出“page not found”。
statusCode: {
404: function() {
alert("page not found");
如果请求成功,响应状态代码对应的函数会带着success回调函数相同的参数;如果请求结果是错误的(包含3xx之类的重定向),他们会采用error回调函数相同的参数。
( 新增 )(感谢 提供的翻译建议。)
textStatus,
请求成功后的回调函数。这个函数传递3个参数:从服务器返回的数据,并根据dataType参数进行处理后的数据或dataFilter回调函数,如果指定的话;一个描述状态的字符串;还有 jqXHR(在jQuery 1.4.x前为XMLHttpRequest) 对象 。在jQuery 1.5, 成功设置可以接受一个函数数组。每个函数将被依次调用。这是一个
设置请求超时时间(毫秒)。值为0表示没有超时。此设置将覆盖 里的全局设置。
超时周期开始于$.ajax 访问成功的那个时间点;如果几个其他请求都在进步并且浏览器有没有可用的连接,它有可能在被发送前就超时了。在 jQuery 1.4.x 和前面的版本中, 如果请求超时,XMLHttpRequest对象是处于无效状态;访问任何对象的成员可能会抛出一个异常。只有在 Firefox 3.0+,script 和 JSONP请求在超时后不能被取消;该脚本将运行即使超时后到达。
traditional
如果你想要用传统的方式来序列化数据,那么就设置为true。请参考工具分类下面的方法.
type (默认: 'GET')
method选项的别名。如果你使用jQuery 1.9.0 之前的版本,你需要使用type选项。
url (默认: 当前页面地址)
发送请求的地址。
于响应HTTP访问认证请求的用户名
xhr (默认: 当可用的ActiveXObject(IE)中,否则为XMLHttpRequest)
回调创建XMLHttpRequest对象。当可用时默认为ActiveXObject(IE)中,否则为XMLHttpRequest。提供覆盖你自己的执行的XMLHttpRequest或增强工厂。
一对“文件名-文件值”组成的映射,用于设定原生的 XHR对象。例如,如果需要的话,在进行跨域请求时,你可以用它来设置withCredentials为true。
url: a_cross_domain_url,
xhrFields: {
withCredentials: true
在 jQuery 1.5中, withCredentials属性不会传递给原生的XHR从而对于需要使用此属性的 CORS 请求,则只能忽略这个属性。。出于这个原因,我们建议您使用jQuery1.5.1+,如果您需要使用它。
jQuery 发送的所有 Ajax 请求,内部都会通过调用 $.ajax() 函数来实现。通常没有必要直接调用这个函数,可以使用几个已经封装的简便方法,如和。如果你需要用到那些不常见的选项,那么, $.ajax()使用起来更灵活。
在简单地说, $.ajax()函数可以不带参数调用:
注意: 所有的选项都可以通过 函数来全局设置
这个例子中,不使用选项,加载当前页面的内容,但其结果没用的。若要使用结果,我们可以实现的回调功能之一。
jqXHR 对象
从jQuery 1.5开始,$.ajax() 返回XMLHttpRequest(jqXHR)对象,该对象是浏览器的原生的XMLHttpRequest对象的一个超集。例如,它包含responseText和responseXML属性,以及一个getResponseHeader()方法。当传输机制不是是XMLHttpRequest时(例如,一个JSONP请求脚本,返回一个脚本 tag 时),jqXHR对象尽可能的模拟原生的XHR功能。
从jQuery 1.5.1开始, jqXHR对象还包含了overrideMimeType方法 (它在jQuery 1.4.x中是有效的,但是在jQuery 1.5中暂时的被移除)。.overrideMimeType() 方法可能用在beforeSend()的回调函数中,例如,修改响应的Content-Type信息头:
url: "http://fiddle.jshell.net/favicon.png",
beforeSend: function ( xhr ) {
xhr.overrideMimeType("text/ charset=x-user-defined");
}}).done(function ( data ) {
if( console && console.log ) {
console.log("Sample of data:", data.slice(0, 100));
从 jQuery 1.5 开始,$.ajax()返回的jqXHR对象 实现了 Promise 接口, 使它拥有了 Promise 的所有属性,方法和行为。(见获取更多信息)。为了让回调函数的名字统一,便于在$.ajax()中使用。jqXHR也提供.error() .success()和.complete()方法。这些方法都带有一个参数,该参数是一个函数,此函数在 $.ajax()请求结束时被调用,并且这个函数接收的参数,与调用 $.ajax()函数时的参数是一致。这将允许你在一次请求时,对多个回调函数进行赋值,甚至允许你在请求已经完成后,对回调函数进行赋值(如果该请求已经完成,则回调函数会被立刻调用)。
jqXHR.done(function(data, textStatus, jqXHR) {});
一个可供选择的 success 回调选项的构造函数,.done()方法取代了的过时的jqXHR.success()方法。请参阅的实现细节。
jqXHR.fail(function(jqXHR, textStatus, errorThrown) {});
一种可供选择的 error 回调选项的构造函数,.fail()方法取代了的过时的.error()方法。请参阅的实现细节。
jqXHR.always(function(data|jqXHR, textStatus, jqXHR|errorThrown) { });(在jQuery 1.6 中添加)
一种可供选择的 complete 回调选项的构造函数,.always()方法取代了的过时的.complete()方法。
在响应一个成功的请求后,该函数的参数和.done()的参数是相同的:data, textStatus, 和 jqXHR 对象.对于失败的请求,参数和.fail()的参数是相同的:jqXHR 对象, textStatus, 和 errorThrown。请参阅的实现细节。
jqXHR.then(function(data, textStatus, jqXHR) {}, function(jqXHR, textStatus, errorThrown) {});
包含了 .done() 和 .fail()方法的功能,(从 jQuery 1.8 开始)允许底层被操纵。请参阅的实现细节。
推荐使用的注意事项:
jqXHR.success(), jqXHR.error(), 和 <plete()回调从 jQuery 1.8开始 被弃用过时。他们将最终被取消,您的代码应做好准备, 从jQuery 3.0开始被删除,你可以使用jqXHR.done(), jqXHR.fail(), 和 jqXHR.always() 代替。
var jqxhr = $.ajax( "example.php" )
.done(function() { alert("success"); })
.fail(function() { alert("error"); })
.always(function() { alert("complete"); });
jqxhr.always(function() { alert("second complete"); });
this在所有的回调中的引用,是这个对象在传递给$.ajax的设置中上下文;如果没有指定context(上下文),this 引用的是Ajax设置的本身。
为了向后兼容XMLHttpRequest ,一个 jqXHR 对象将公开下列属性和方法:
readyState
responseXML 和/或 responseText 当底层的请求分别作出 XML 和/或 文本响应
statusText
abort( [ statusText ] )
getAllResponseHeaders() 一个字符串
getResponseHeader( name )
overrideMimeType( mimeType )
setRequestHeader( name, value ) 用新值替换旧值,而不是将新值与旧值连接起来,这偏离了标准
statusCode( callbacksByStatusCode )
假如没有onreadystatechange属性,因为不同的状态可以分别在 success , error , complete和statusCode 方法中进行处理。
Callback Function Queues(回调函数)
beforeSend, error, dataFilter, success 和 complete接受的回调函数是在合适的时间调用。
从jQuery 1.5开始, fail , done ,和从jQuery 1.6开始的always回调钩子(hooks)采用先入先出队列管理。这意味着你可以为每个挂钩分配多个回调。见 ,这是实现内部的$.ajax()回调钩子(hooks)。
这里有$.ajax()提供的回调钩子 (hooks),如下:
beforeSend 在发送请求之前调用,它接收jqXHR对象和settings作为参数对象。
error 在请求出错时调用。如果请求失败,在它们的顺序依次登记。他们接受jqXHR ,字符串表示的错误类型,以及异常对象(如果有的话)。一些内置的错误会将 "abort", "timeout", "No Transport" 等字符串作为异常对象。
dataFilter 在请求成功之后调用。传入返回的数据以及dataType参数的值。并且必须返回新的数据(可能是处理过的)传递给success回调函数。
success 当请求成功并接收到返回数据之后调用。传入返回后的数据,以及包含成功代码的字符串和jqXHR对象。
Promise callbacks — .done(), .fail(), .always(), and .then() — 根据他们注册的顺序被调用。
complete 请求完成时,无论是在失败或成功,它们按顺序依次执行回调。他们收到jqXHR对象,以及一个包含成功或错误代码。
Data Types(数据类型)
$.ajax()调用不同类型的响应,被传递到成功处理函数之前,会经过不同种类的预处理。 预处理的类型取决于由更加接近默认的Content-Type响应,但可以明确使用dataType选项进行设置。如果提供了dataType选项,
响应的Content-Type头信息将被忽略。
有效的数据类型是text, html, xml, json,jsonp,和 script.
如果指定的是text 或 html, 则不会预处理。
这些数据被简单地传递给成功处理函数,
并通过该jqXHR对象的responseText属性获得的。
如果指定的是xml,
响应结果作为,在传递给成功处理函数之前使用进行解析。
XML文档是可以通过该jqXHR对象的responseXML属性获得的。
如果指定的是json,响应结果作为一个对象,在传递给成功处理函数之前使用进行解析。 解析后的JSON对象可以通过该jqXHR对象的responseJSON属性获得的。
如果指定的是script ,$.ajax() 执行这段 JavaScript,这段 JavaScript 从服务器接收到,在传递给成功处理函数之前是一个字符串。
如果指定的是jsonp ,$.ajax()会自动在请求的URL后面增加一个查询字符串参数 callback=?(默认) 。传递给$.ajax() 设置中的jsonp 和 jsonpCallback属性可以被用来指定, 分别为 查询字符串参数的名称和JSONP回调函数的名称。服务器应返回有效的JavaScript,传递JSON响应到回调函数(愚人码头注:例如,flightHandler({"code": "CA1998","price": 1780,"tickets": 5});等)。 在包含JSON对象的相应结果传递给成功处理函数之前,$.ajax()
将执行返回的JavaScript, 调用JSONP回调函数。
更多JSONP信息可以参阅.
Sending Data to the Server(发送数据到服务器)
默认情况下,Ajax请求使用GET方法。如果要使用POST方法,可以设定type参数值。这个选项也会影响 data
选项中的内容如何发送到服务器。POST数据将被发送到服务器使用UTF-8字符集,根据W3C XMLHttpRequest的标准。
data选项既可以包含一个查询字符串,比如 key1=value1&key2=value2,也可以是一个映射,比如 {key1: 'value1', key2: 'value2'}
。如果使用了后者的形式,则数据再发送前会用 将其转换成查询字符串。这个处理过程也可以通过设置processData选项为false来回避。如果我们希望发送一个XML对象给服务器时,这种处理可能并不合适。并且在这种情况下,我们也应当改变contentType 选项的值,用其他合适的MIME类型来取代默认的
application/x-www-form-urlencoded 。
Advanced Options(高级选项)
global选项用于阻止响应注册的回调函数,比如, ,以及类似的方法。这在有些时候很有用,比如发送的请求非常频繁且简短的时候,就可以在里禁用这个。跨域脚本和JSONP请求,全局选项自动设置为false。更多关于这些方法的详细信息,请参阅下面的内容。
如果服务器需要HTTP认证,可以使用用户名和密码可以通过 username 和 password 选项来设置。
Ajax请求是限时的,所以错误警告被捕获并处理后,可以用来提升用户体验。请求超时这个参数通常就保留其默认值,要不就通过来全局设定,很少为特定的请求重新设置timeout选项。
默认情况下,请求总会被发出去,但浏览器有可能从他的缓存中调取数据。要禁止使用缓存的结果,可以设置cache参数为false。如果希望判断数据自从上次请求后没有更改过就报告出错的话,可以设置ifModified为true。
scriptCharset允许给&script&标签的请求设定一个特定的字符集,用于script 或者 jsonp类似的数据。当脚本和页面字符集不同时,这特别好用。
Ajax的第一个字母是“asynchronous”的开头字母,这意味着所有的操作都是并行的,完成的顺序没有前后关系。$.ajax()的async参数总是设置成true,这标志着在请求开始后,其他代码依然能够执行。强烈不建议把这个选项设置成false,这意味着所有的请求都不再是异步的了,这也会导致浏览器被锁死。
$.ajax()函数返回他创建的XMLHttpRequest对象。通常jQuery只在内部处理并创建这个对象,但用户也可以通过xhr 选项来传递一个自己创建的xhr对象。返回的对象通常已经被丢弃了,但依然提供一个底层接口来观察和操控请求。比如说,调用对象上的.abort() 可以在请求完成前挂起请求。
目前, 在Firefox中有一个bug,虽然.getResponseHeader('Content-Type')返回一个非空的字符串,但是 .getAllResponseHeaders()还是返回空字符串, 在Firefox中使用jQuery不支持自动解码JSON CORS 响应。
重写jQuery.ajaxSettings.xhr 的一种解决方案,如下
(function () {
var _super = jQuery.ajaxSettings.xhr,
xhrCorsHeaders = [ "Cache-Control", "Content-Language", "Content-Type", "Expires", "Last-Modified", "Pragma" ];
jQuery.ajaxSettings.xhr = function () {
var xhr = _super(),
getAllResponseHeaders = xhr.getAllResponseH
xhr.getAllResponseHeaders = function () {
var allHeaders = "";
allHeaders = getAllResponseHeaders.apply( xhr );
if ( allHeaders ) {
return allH
} catch ( e ) {
$.each( xhrCorsHeaders, function ( i, headerName ) {
if ( xhr.getResponseHeader( headerName ) ) {
allHeaders += headerName + ": " + xhr.getResponseHeader( headerName ) + "\n";
return allH
Extending Ajax(扩展 Ajax)
从jQuery 1.5开始,,jQuery的Ajax实现包括预, 和传输,让您更加灵活的扩展Ajax。如需有关这些先进功能的信息,请参阅
Using Converters(使用转换器)
$.ajax()的转换器支持的数据类型映射到其它数据类型。但是,如果你想把自定义数据类型映射到一个已知的类型(json等),您必须contents 选项在响应的Content-Type和实际的数据类型之间的添加一个相关的转换函数:
$.ajaxSetup({
contents: {
mycustomtype: /mycustomtype/
converters: {
"mycustomtype json": function ( result ) {
这额外的对象是必要的,因为响应内容类型(Content-Types)和数据类型从来没有一个严格的一对一对应关系(正则表达式表示结果)。
转换一个支持的类型(例如text, json)成自定义数据类型,然后再返回,使用另一个直通转换器:
$.ajaxSetup({
contents: {
mycustomtype: /mycustomtype/
converters: {
"text mycustomtype": true,
"mycustomtype json": function ( result ) {
现在上面的代码允许通过从text 为mycustomtype ,进而,mycustomtype 转换为 json。
Additional Notes:(其他注意事项:)
由于浏览器的安全限制,大多数“Ajax”的要求,均采用 ;该请求不能成功地检索来自不同的域,子域或协议的数据。
Script和JSONP形式请求不受同源策略的限制。
Example: 保存数据到服务器,成功时显示信息。
method: "POST",
url: "some.php",
data: { name: "John", location: "Boston" }}).done(function( msg ) {
alert( "Data Saved: " + msg );});
Example: 装入一个 HTML 网页最新版本。
url: "test.html",
cache: false}).done(function( html ) {
$("#results").append(html);});
Example: 发送 XML 数据至服务器。设置 processData 选项为 false,防止自动转换数据格式。
var xmlDocument = [create xml document];var xmlRequest = $.ajax({
url: "page.php",
processData: false,
data: xmlDocument}); xmlRequest.done(handleResponse);
Example: 发送id作为数据发送到服务器,
保存一些数据到服务器上,
并通一旦它的完成知用户。
如果请求失败,则提醒用户。
var menuId = $("ul.nav").first().attr("id");var request = $.ajax({
url: "script.php",
method: "POST",
data: {id : menuId},
dataType: "html"}); request.done(function(msg) {
$("#log").html( msg );}); request.fail(function(jqXHR, textStatus) {
alert( "Request failed: " + textStatus );});
Example: 载入并执行一个JavaScript文件.
method: "GET",
url: "test.js",
dataType: "script"});

我要回帖

更多关于 学习卤菜技术 的文章

 

随机推荐