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交互完成后的回调函数,该回调函数将在successerror回调函数之后被执行。该选项指定的函数是一个形如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信息返回responseXMLresponseText,并将响应传给回调函数对应的参数。该选项支持如下值:

  • 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:设置是否仅在服务器数据改变时获取新数据。系统将根据HTTPLast-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请求,而是使用另两个更简便的方法getXxxpost。当开发者使用这两个方法来发送请求时,jQuery将使用全局Ajax选项。为了设置全局Ajax选项,jQuery提供了如下方法。

方法 描述
jQuery.ajaxSetup(options) jQueryAjax交互设置全局选项,其中options参数和jQuery.ajax(options)里的options参数的功能和意义完全一样。