Jquery Ajax请求与实践

    之前介绍了如何使用.load()和各个get方法发送Ajax请求并加载不同类型的数据。实际上,所有的这些方法在内部都要调用jQuery.ajax方法。

 

     ajax()方法包含20多个选项,他们是基于jQuery实现Ajax请求的底层接口,其他方法则是更高级别的接口。

 

     如果要对Ajax请求的更多选项进行控制

      - 需要直接使用jQuery.ajax方法

      - 也可以用jQuery.ajaxSetup方法对ajax请求选项的默认值进行设置

      - 或者使用相关方法对全局Ajax事件进行处理。

 

1. Ajax底层实现

$.ajax()可以执行一个异步的HTTP(ajax)请求并返回XMLHttpRequest对象。

        jQuery.ajax(settings)  

        - settings是一组键值对,用于设置Ajax请求的选项,所有这些选项都是可选的

 

2. Ajax请求选项

 

    (1)async:boolean值,用于指定是否以异步方式发送请求,默认为true,即默认所有请求都是异步的。如过需要同步请求则设置为false。同步请求会暂时锁定浏览器,在请求处于活动状态是禁用任何操作

 

    (2)beforeSend(XMLHttpRequest):指定在发送请求之前调用的函数。使用该函数可以修改XMLHttpRequest对象,例如设置自定义标头。XMLHttpRequest作为唯一的参数。这是一个Ajax事件,若要可取消当前请求,在该函数中返回false.

 

     (3)cache:一个Boolean值,指定是否强制浏览器缓存被请求的页面,默认为true。

           当dataType=“script"或"jsonp"时,默认值为false。

           若要强制浏览器不缓存被请求的页面,则设置为false。

     

      (4)complete(XMLHttpRequest, textStatus):指定请求完成时要执行的回调函数,无论请求成功与否,都会执行这个回调函数。接收2个参数:XMLHttpRequest对象和描述成功请求类型的字符串。 是一个Ajax事件

 

        (5)contentType:一个字符串,指定向服务器发送的数据类型。默认值为"application/ x-www-form-urlencoded", 这适用于大多数情况。如果想$.ajax()传入一个内容类型,则它将始终被发送到服务器,即使没有发送数据。

 

        (6)context:一个对象,用于设置所有ajax相关回调函数的上下文。即可以用this关键字指向这个对象。如果不设置这个参数,则this将指向调用本次ajax请求时传递的settings参数。 例如如果指定一个DOM元素作为context参数,则会设置success回调函数的上下文为该DOM元素。例如,下面的实例代码指定body元素作为所有回调函数的上下文:

        $.ajax({

                 url: "test.html", context: document.body, success: function(){

                          $(this).addClass("done”);

                  }

        });

      

      (7)data: 一个对象或字符串,给出要发送到服务器的数据。

          如果该参数不是字符串,则会将它转换为查询字符串并追加到GET请求的URL后面。

          如果提供了一个对象,则必须是键值对。

          如果某个键提供了一个数组作为其值,则jQuery将使用相同的键对多个值进行序列化处理,例如

          {foo: ["bar1", "bar2"]}将被转换为"&foo=bar1&foo=bar2"

     

       (8)dataFilter(data,type):指定对XMLHttpRequest的原始响应数据进行预处理的帅选函数。接受2个参数:从服务器返回的原始数据和dataType参数

 

          (9)dataType:一个字符串,指定预期服务器返回的数据类型。如果不指定该参数,则jQuery将自动根据HTTP包的MIME信息进行智能判断,例如

             - XML MIME类型将被识别为XML文档。

         - 如果该选项设置为JSON,将会生成一个JS对象

         - 如果将该选项设置为script,则会加载和执行这个脚本

         - 如果指定了任何其他类型,则服务器数据将数据作为字符串返回。

 

        服务器段将根据dataType参数对数据进行解析,然后将返回的数据作为第一个参数传递给回调函数。

可用的数据类型如下:

         - xml: 返回XML文档,可用jquery对该文档进行处理

         - html:以纯文本格式返回HTML信息;所包含的的script标记将在插入DOM时执行。

         - script:以纯文本格式返回javascript代码。此时将禁止缓存,除非设置了cache选项。在远程域请求中,POST请求将转为GET请求。

         - json:将响应处理为JSON数据并返回一个JS对象。在jQuery中将通过严格的方式来解析JSON数据,任何格式不正确的JSON数据都将被拒绝,还会引发1个parsererror.

         - jsonp:使用JSONP格式来加载JSON数据,此时将会在所请求的URL后面额外追加"?callback=?",以指定回调函数。

         - text:返回纯文本字符串。

        

         (10)error(XMLHttpRequest, textStatus, errorThrown):自定请求失败时要调用的函数。

                     可以传入3个函数:XMLHttpRequest对象,一个描述发生的错误类型的字符串和一个可选的异常对象(如果发生异常)。第二个参数除了得到null外,其他可能的值包括:timeout,error,notmodified, parsererror。这是一个ajax事件。

             

             (11)global:一个Boolean值,指定是否触发全局Ajax事件,默认值为true。若设置为false, 则不会触发全局Ajax事件,如ajaxStart或者ajaxStop。这个选项是可以用于控制不同的ajax事件。

        

          (12)ifModified:一个boolean值,指定是否仅在服务器数据改变时才获取新数据。这是通过last-modified标头进行判断的。该选项的默认值为false,即忽略此标头。

 

          (13) jsonp: 一个字符串,用于重写jsonp请求中的回调函数名称,默认值为callback。在GET请求中,该名称用来替换查询字符串"callback=?"中的"callback",因此,{jsonp: onJsonPLoad}会导致将"onJsonPLoad=?"发送给服务器。如果使用HTTP POST方法发送Ajax请求,则该名称将作为数据发送到服务器。

 

         (14) jsonpCallback: 一个字符串,为jsonp请求指定一个回调函数名称,该名称用来替换GET URL查询字符串"callback=?"中的"?"。这个值用来取代有jQuery自动生成的随机名称(如jsonp1265360836807)。最好是让jQuery生成一个唯一的名称,这样会使请求更容易管理,并提供回调函数和错误处理程序。当允许浏览器缓存GET请求时,可以指定这个回调函数

 

        (15) password: 一个字符串,指定用于响应HTTP访问认证请求的密码。

 

        (16) processData: 一个boolean值,默认值为true。默认情况下,如果通过data选项传入的数据时一个对象(只要不是字符串),都会处理转化成一个查询字符串,以配合默认的内容类型"application/x-www-form-urlencoded"。如果要发送DOM树信息,或其他不希望转换的信息,可将此选项设置为false。

 

        (17) scriptCharset: 一个字符串,仅用于dataType为"jsonp"或"script"且type为"GET"请求。强制请求解释为某个字符集。通常只在本地和远程的字符集不同时使用

 

        (18) success(data, textStatus, XMLHttpRequest): 指定请求成功时要调用的函数。该函数可接受3个传入参数:有服务器返回的数据(按照dataType参数自定的格式)、一个描述状态的字符串、以及XMLHttpRequest对象。这是一个Ajax事件。

 

        (19) timeout: 一个数字,用于设置请求超时值(单位为毫秒),如果使用$.ajaxSetup方法设置了超世之才,则该参数将覆盖全局的超时值。例如可以使用此属性为一个请求设置比其他所有请求更长的超时值

 

        (20) traditional: 一个boolean值,若要使用传统样式对参数进行序列化,则设置为true

 

        (21) type: 一个字符串,指定请求的类型(GET/POST),默认为GET,也可以使用其他的HTTP请求犯法,例如PUT和DELETE,不过这些方法未被所有浏览器支持

 

        (22) url: 一个字符串,指定要请求的URL,默认为当前页的URL

 

        (23) username: 一个字符串,指定用于响应HTTP访问认证请求的用户名

 

        (24) xhr: 用于创建XMLHttpRequest对象的回调函数。默认时在IE中是ActiveXObject,在其他浏览器中为XMLHttpRequest,通过重写可以提供自己的XMLHttpRequest实现,或者增强工厂函数的功能

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值