当前位置:首页 » 其他

JQuery之Ajax请求

2016-01-13 16:06 本站整理 浏览(5)

1、介绍

ajax()方法通过Http请求加载远程数据。该方法是JQuery底层的ajax实现,简单的实现可使用$.get,$.post等。$.ajax()返回其创建的XMLHttpRequest对象,使用该函数为获得更多的灵活性。

2、语法

$.ajax({settings]); //所有参数都是可选的

3、参数说明

options:类型为Object,可选。AJAX请求设置。所有选项都是可选的。

async:类型为Boolean,默认为true,表示请求为异步请求。为false时是同步请求。(所谓同步请求会锁住浏览器,则用户其它操作必须等请求完成才能执行)。

beforeSend(XHR):类型为Function,发送请求前可修改XMLHttpRequest对象的函数,如添加自定义的HTTP头。XMLHttpRequest对象是唯一的参数。这是个ajax事

件,如果返回false可以取消本次ajax请求。

catch:类型为Boolean,默认为true,dataType为script和jsonp时默认为false。设置为false将不缓存此页面。jQuery1.2新功能。

complete(XHR, TS):类型Function,请求完后的回调函数(成功或失败均会调用)。参数为XMLHttpRequest对象和一个描述请求类型的字符串。这是个Ajax事件。

contentType:类型为String,默认值为”application/x-www-form-urlencoded“。发送信息至服务器时内容编码类型。默认值适合大部分情况。如果你明确地传递了一个

content-type给$.ajax()那么它必定会发送给服务器(即使没有数据要发送)。

context:类型为Object,这个对象用于设置回调函数的上下文。也就是说让回调函数内this指向这个对象(如果不设定这个参数,那么this就指向调用本次AJAX请求时传

递的options参数)。比如指定一个DOM元素作为context参数,这样就设置了success回调函数的上下文为这个DOM。

data:类型为String,发送到服务器的数据。将自动转换成请求字符串格式。GET请求将附加在URL后。查看processData选项说明以禁止此自动转换。必须为

Key/Value格式。如果是数组,jQuery将自动为不同值对应同一个名称。如{foo:["bar1","bar2"]}转换成‘&foo=bar1&foo=bar2’。

dataFilter:类型为Function,给AJAX返回原始数据进行预处理的函数。提供data和type两个参数:data是AJAX返回的原始数据,type是调用jQuery.ajax时提供的

dataTpye参数。函数返回的值由jQuery进一步处理。

dataType:类型为String,预期服务器返回的数据类型。如果不指定,jQuery将自动根据HTTP包MIME信息来智能判断。比如XML MIME类型就被识别为XML。在1.4中,

json就会生成一个JavaScript对象,而script则会执行这个脚本。随后服务器端返回后的数据会根据这个值解析后,传递给回调函数。

可用值:

”xml“:返回XML,,可用jQuery处理。

"html":返回存文本HTML信息;包含的script标签会在插入dom时执行。

”script“:返回存文本JavaScript代码。不会自动缓存结果,除非设置”catch“参数。注意:在远程请求时(不在同一个域下),所有的POST请求都将转为

GET请求(因为将使用DOM的script标签来加载)。

”json“:返回json数据。

”jsonp“:JSONP格式。使用JSONP形式调用函数时,如”myurl?callback=?“,jQuery将自动替换?为正确的函数名,以执行回调函数。

”text“:返回存文本字符串。

error:类型为Function,默认为自动判断(xml或html)。请求失败时调用此函数。有三个参数:XMLHttpRequest对象,错误信息,捕获的异常对象(可选)。如果发生了错

误,错误信息(第二参数)除了得到null之外,还可能是”timeout“,”error“,”notmodified“和”parsererror“。这是个AJAX事件。

global:类型为Boolean,是否触发全局的ajax事件。默认为true,设置为false将不会触发全局ajax事件,如ajaxStart或ajaxStop可用于控制不同的ajax事件。

ifModified:类型为Boolean,仅在服务器数据改变时获取新数据,默认为false。使用的是HTTP包Last-Modified头信息判断。在jQuery1.4中,它也会检查服务器指定

的‘etag’来确定数据有没有被修改过。

jsonp:类型为String,在一个jsonp请求中重写回调函数的名字。这个值用来替代在”callback=?“这种GET或POST请求中URL参数里的callback部分,比如

{jsonp:'onJsonPLoad'}会导致将“onJsonPLoad=?”传给服务器。

jsonpCallback:类型为String,为jsonp请求指定一个回调函数名。这个值用来取代jQuery自动生成的随机函数名。这主要用来让jQuery生成独特的函数名,这样管理请

求更容易,也能方便地提供回调函数和错误处理。也可以在让浏览器缓存GET请求时,指定这个回调函数名。

username:类型为String,用于响应HTTP访问认证请求的用户名。

password:类型为String,用于响应HTTP访问认证请求的密码。

processData:类型为Boolean,默认为true,表示data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转换成一个查询字符串,以配合默

认内容类型“application/x-www-form-urllencoded”。如果要发送DOM树信息或其它不希望转换的信息,则设置成false。

scriptCharset:类型为String,只有当请求时dataType为“jsonp”或“script”,并且type是GET才会用于强制修改charset。通常只在本地和远程的内容编码不同时使用。

success:类型为Function,请求成功后的回调函数,并根据dataType参数进行处理后的数据;描述状态的字符串。这是个ajax事件。

traditional:类型为Boolean,如果想用传统的方式来序列化数据,那么就设置为true。

timeout:类型为Number,设置请求超时时间(毫秒)。此设置将覆盖全局设置。

type:类型为String,默认为GET,请求方式。注意:其它的HTTP请求方法,如PUT和DELETE也可以使用,但仅部分浏览器支持。

url:类型为String,默认值为当前页地址。发送请求的地址。

xhr:类型为Function,需要返回一个XMLHttpRequest对象。默认在IE下是ActiveXObject而其它情况下是XMLHttpRequest。用于重写或者提供一个增强的

XMLHttpRequest对象。该参数在jQuery1.3以前不可用。

4、回调函数

如果要处理$.ajax()得到的数据,则需要使用回调函数:beforeSend、error、dataFilter、success、complete。beforeSend:在发送请求之前调用,并且传入一个XMLHttpRequest作为参数。

error:在请求出错时调用。传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象(如果有的话)。

dataFilter:在请求成功之后调用。传入返回的数据以及“dataType”参数的值。并且必须返回新的数据(可能处理过的)传递给success回调函数。

success:当请求之后调用,传入返回后的数据,以及包含成功代码的字符串。

complete:当请求完成之后调用这个函数,无论成功或失败。传入XMLHttpRequest对象,以及一个包含成功或错误代码的字符串。