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参数的功能和意义完全一样。 |