本来想详细说明一下Ajax技术,但是,当手放上键盘时,我发现好像无从说起。
就把自己总结的Ajax直接拷贝吧。
jQuery.ajax( ... )
也可以简写成:$.ajax( ... )
概述:
通过HTTP请求加载远程数据
它是jQuery底层AJAX实现,更多的高层实现可以使用$.get , $.post 等。
$.ajax()返回其创建的XML HttpRequest对象,
大多数情况不必使用此函数,而是使用高层实现。
回调函数:
$.ajax 的作用是将某些数据(或没有数据)发送至某页面,
但是在很多情况下,$.ajax 需要那些页面给予它的响应,
此时就需要使用回调函数:beforeSend , error , dataFilter , success , complete
|- beforeSend:发送请求之前调用此函数
|- error:请求出错时调用此函数
|- dataFilter:请求成功后调用此函数
|- success:请求之后调用此函数,传入返回后的数据,以及包含成功代码的字符串
|- complete:请求完成后调用此函数,无论是否成功,传入XML HttpRequest对象,以及一个包含成功或错误代码的字符串
回调函数的顺序是:beforeSend -> 请求 -> (error) -> 响应 -> dataFilter -> success -> complete -> 结束
其中关于 error,它只会发生在请求失败的时候,当请求失败之后,dataFilter 和 success 不会执行,但是 complete 会执行
其中关于 dataFilter,它是一个过滤器,用来对响应数据进行处理,之后,通常情况会返回一个处理后的结果,这个返回结果会交给 success
发送数据(请求数据)到服务器:
默认采用GET方法,如果使用POST方法,可以设置 type 参数值,这会影响 data 选项中的内容如何发送到服务器。
data 选项既可以写成查询字符串的形式:key1=value1&key2=value2,也可以写成映射关系:{key1:'value1',key2:'value2'},使用映射关系时,数据会在发送时被转换成查询字符串,此过程可用通过设置 processData 选项为false来回避此处理过程。
参数:url , [settings]
url:一个用来包含发送请求的URL字符串
settings:AJAX请求设置。所有选项都是可选的,以下是settings选项:
|- Map accepts:默认取决于数据类型,内容类型发送请求头,告诉服务器什么样的响应会接受返回。
|- Boolean async:默认true,代表所有请求均为异步请求
|- Function beforeSend(XHR):发送请求前可修改 XML HttpRequest对象的函数,这是一个Ajax事件,如果返回false可用取消此次ajax请求。
|- Boolean cache:默认true,缓存此页面
|- Function complete(XHR,TS):请求完成后回调函数(请求成功或失败后均调用)
|- Map contents:一个以{字符串:正则表达式}配对的对象,用来确定 jQuery 将如何解析响应,给定其内容类型
|- String contentType:默认"application/x-www-form-urlencoded",发送信息至服务器时内容编码类型。
|- Object context:这个对象用于设置 Ajax 相关回调函数的上下文。也就是说,让回调函数内 this 指向这个对象(如果不设定此参数,this 默认执行本次 Ajax 请求时传递的 options 参数)。
|- Map converters:默认{"* text": window.String, "text html": true, "text json":jQuery.parseJSON, "text xml": jQuery.parseXML},一个数据类型对数据类型转换器对象。
|- Map crossDomain:默认false(同域请求),跨域请求为false,例如重定向到另一个域。
|- Object, String data:发送到服务器的数据,将自动转换成请求字符串格式。可通过 processData 为 false 禁止自动转换。
|- Function dataFilter:对于返回的数据先进行处理,后返回值,交给success回调函数。
|- String dataType:如果不指定,会自动根据 HTTP 包 MIME 信息来智能判断。可用值:xml、html、script、json、jsonp、text。
|- Function error:自动判断请求失败时调用此函数,有三个参数:XMLHttpRequest对象、错误信息、(可选)捕获的异常对象。如果发生错误,错误信息除了得到null之外,还可能是"timeout","error","notmodified"和"parsererror"。
|- Boolean global:默认true,是否触发全局 Ajax 事件。
|- Map headers:默认{},一个额外的{键:值}对映射到请求一起发送
|- Boolean ifModified:默认false,仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。
|- Map isLocal:默认去接与当前的位置协议。
|- String jsonp:在一个 jsonp 请求中重写回调函数的名字。
|- String jsonpCallback:为 jsonp 请求指定一个回调函数名。主要是用来让 jQuery 生成独特的函数名,管理请求更容易。
|- String mimeType:一个 mime 类型用来覆盖XHR的MIME类型。
|- String password:用于响应HTTP访问认证请求的密码
|- Boolean processData:默认true,通过data选项传递进来的数据,如果是一个对象,都会被处理转化成一个查询字符串。
|- String scriptCharset:只有当 dataType:'jsonp'或'script',并且type:'GET'时才会用于强制修改charset。
|- Map statusCode:默认{},一组数值的HTTP代码和函数对象,当响应时调用了响应的代码。
|- Function,Array success(data, textStatus, jqXHR):请求成功后的回调函数。参数由服务器返回,并根据dataType参数进行处理后的数据;描述状态的字符串;jqXHR对象。
|- Boolean traditional:如果想使用传统方式序列化数据,就设置成true。
|- Number timeout:设置请求超时事件(毫秒)
|- String type:默认GET,可以使用POST。至于PUT、DELETE等其他的请求方法,只有部分浏览器支持。
|- String url:默认:当前页地址。发送请求的地址。
|- String username:用于响应HTTP访问认证请求的用户名
|- Function xhr:需要返回一个XML HttpRequest对象。
|- Map xhrFields:一对"文件名-文件值"在本机设置XHR对象。