3.8.3 jQuery.ajax(options)方法与jQuery.ajaxSetup(options)方法
3.8.3 jQuery.ajax(options)方法与jQuery.ajaxSetup(options)方法
jQuery.ajax(options)
既可以发送GET
请求,也可以发送POST
请求,甚至可以发送同步请求。使用该方法,开发者可以获得Ajax
交互的全部控制权。jQuery.ajax(options)
是jQuery Ajax
支持的底层实现,该方法返回创建的XMLHttpRequest
对象。
大部分时候开发者无须理会它返回的XMLHttpRequest
对象,但在特殊情况下其可用于手动终止请求。
ajax函数的参数
ajax
函数只需要一个options
参数,此参数是一个形如{key1:value1,key2,value2...}
的JavaScript
对象,用于指定发送Ajax
请求的各种选项,各选项的说明如下。
ajax函数选项
async选项
async
:指定是否使用异步请求,该选项默认是true
。
contentType选项
contentType
:指定发送请求到服务器时所使用的内容编码类型。该选项的默认值是”application/x-www-form-urlencoded"
,该默认值适合大多数应用场合。
beforeSend选项
beforeSend
:指定发送请求之前
将触发的函数。通过指定该函数,可以在发送请求之前添加自定义的请求头。该选项指定的函数是一个形如function(xhr){...}
的函数,其中xhr
就是本次Ajax
请求所使用的XMLHttpRequest
对象。如果让该函数返回false
,即可取消本次Ajax
请求。
data选项
data
:发送本次Ajax
请求的请求参数。该选项既可使用JavaScript
对象,也可以使用查询字符串。如果指定为JavaScript
对象,系统会自动将其转换为查询字符串
(除非将processData
设为false)
。当指定该选项值为形如{key1:value1,key2:value2...}
的对象,且其中valuen
为数组时,系统自动将它们转换为多个请求参数,例如{foo:["bar1","bar2"]}
将会被转换为'&foo=bar1&foo=bar2'
。
type选项
type
:设置发送请求的方式,最常用的两个值是"POST"
和"GET"
,该选项默认值是"GET"
。
url选项
url
:指定发送Ajax
请求的目的URL
地址。
timeout选项
timeout
:设置Ajax
请求超时时长。
processData选项
processData
:指定是否需要处理请求数据
。如果传给data
选项的不是字符串,而是一个JavaScript
对象,则jQuery
将自动将其转换成查询字符串。如果不希望jQuery
进行这种转换,则可将该选项指定为false
。
安全授权相关选项
password选项
password
:指定密码。如果目标URL
是需要安全授权的地址,则通过该选项指定密码。
username选项
username
:指定用户名。如果目标URL
是需要安全授权的地址,则通过该选项指定用户名。
响应相关选项
complete选项
complete
:指定Ajax交互完成
后的回调函数,该回调函数将在success
或error
回调函数之后被执行。该选项指定的函数是一个形如function(xhr,textStatus){...}
的函数,其中xhr
是本次Ajax
交互所使用的XMLHttpRequest
对象,而textStatus
则是服务器响应状态的描述信息。
success选项
success
:指定Ajax响应成功
后的回调函数。该选项指定的函数是一个形如function(xhr,textStatus){...}
的函数,
其中,xhr
是本次执行Ajax
交互所使用的XMLHttpRequest
对象,而textStatus
则是服务器响应状态的描述信息。
error选项
error
:指定服务器**响应出现错误时
的回调函数**。该选项指定的函数是一个形如function(xhr,textStatus,errorThrown){...}
的函数。
其中:
xhr
是本次发送Ajax
请求的XMLHttpRequest
对象,textStatus
是关于错误的描述信息,errorThrown
是引起错误的错误对象。
dataFilter选项
dataFilter
:该选项执行一个回调函数,该回调函数将会对服务器响应进行预处理。该选项指定的函数是一个形如function(data
,type)
{…}的函数,其中data
表示从服务器返回的响应,而type
表示服务器响应的数据类型(也就是下面dataType
选项中指定的值)。服务器响应数据经过该选项指定的回调函数处理之后将会更加有序。
dataType选项
dataType
:指定服务器响应的数据类型。如果不指定,jQuery
将自动根据响应的MIME
信息返回responseXML
或responseText
,并将响应传给回调函数对应的参数。该选项支持如下值:
xml
,返回可使用jQuery
处理的XML
文档。html
,返回HTML
文本。该HTML
文本里可以使用<script.../>
标签包含JavaScript
脚本。script
,返回JavaScript
脚本,此时将禁止从浏览器缓存里加载信息。jQuery
将会自动执行服务器响应的JavaScript
脚本。json
,返回一个符合JSON
格式的字符串,jQuery
会将该响应转换成JavaScript
对象。jsonp
,指定使用JSONP
加载JSON
块。当使用JSONP
格式时,该在请求URL
之后额外添加”?callback=?"
,其中callback
将作为回函数。text
:返回普通文本响应。
ifModified选项
ifModified
:设置是否仅在服务器数据改变时获取新数据。系统将根据HTTP
的Last-Modified
响应头进行判断。该选项默认是false
。
jsonp选项
jsonp
:该选项指定的值将会覆盖JSONP
请求中的callback
函数。也就是说,该选项指定的值将会覆盖查询字符串里的′callback
=?′部分,即{jsonp:'onJsonPLoad'}
将导致'onJsonPLoad=?'
被传给服务器。
scriptCharset选项
scriptCharset
:该选项仅对dataType
是′jsonp
′或′script
′的情况有效。该选项设置系统使用给定的字符集来解释请求,仅当服务器响应和本地页面使用不同字符集时需要指定该选项。
其他选项
cache选项
cache
:如果该选项被指定为false
,将不会从浏览器缓存里加载信息。该选项默认值为true
;如果服务器响应是”script"
,则该选项默认是false
。
global选项
global
:设置是否触发Ajax
的全局事件处理函数,该选项默认是true
。
xhr选项
xhr
:该选项指定一个函数,该函数用于创建XMLHttpRequest
对象。只有开发者想用自己的方式来创建XMLHttpRequest
对象时才需要使用该选项。
如何设置全局Ajax选项
通过指定上面这些选项,开发者可以全面控制Ajax
请求的各种细节。但在大部分情况下,开发者都不会使用jQuery.ajax(options)
来发送Ajax
请求,而是使用另两个更简便的方法getXxx
和post
。当开发者使用这两个方法来发送请求时,jQuery
将使用全局Ajax
选项。为了设置全局Ajax
选项,jQuery
提供了如下方法。
方法 | 描述 |
---|---|
jQuery.ajaxSetup(options) |
为jQuery 的Ajax 交互设置全局选项,其中options 参数和jQuery.ajax(options) 里的options 参数的功能和意义完全一样。 |