美文网首页
jquery ajax 之 jqXHR 和 Data Types

jquery ajax 之 jqXHR 和 Data Types

作者: 滚石_c2a6 | 来源:发表于2017-04-09 20:39 被阅读272次

    jQuery 发送的所有 Ajax 请求,内部都会通过调用 $.ajax()
    函数来实现。通常没有必要直接调用这个函数,可以使用几个已经封装的简便方法,如$.get()和.post()。如果你需要用到那些不常见的选项,那么, $.ajax()使用起来更灵活。
    注意: 可以通过$.ajaxSetup()函数来全局设置默认选项

    jqXHR 对象

    从jQuery 1.5开始,$.ajax() 返回jqXHR对象,该对象是浏览器原生的XMLHttpRequest对象的一个超集。例如,它包含responseText和responseXML属性,以及一个getResponseHeader()方法。当传输机制不是XMLHttpRequest时(例如,一个JSONP请求脚本,返回一个脚本标签时),jqXHR对象尽可能的模拟原生的XHR功能。

    jqXHR对象 实现了 Promise 接口, 使它拥有了 Promise 的所有属性,方法和行为。

    • jqXHR.done(function(data, textStatus, jqXHR) {});
    • jqXHR.fail(function(jqXHR, textStatus, errorThrown) {});
    • jqXHR.always(function(data|jqXHR, textStatus, jqXHR|errorThrown) { });
    • jqXHR.then(function(data, textStatus, jqXHR) {}, function(jqXHR, textStatus, errorThrown) {});

    this在所有的回调中的引用,由这个对象在传递给$.ajax的context参数设置;如果没有指定context参数,this 引用的是Ajax settings本身。

    为了向后兼容XMLHttpRequest ,一jqXHR对象将公开下列属性和方法:

    • readyState
    • status
    • statusText
    • responseXML and/or responseText 当底层的请求分别作出XML和/或文本响应
    • setRequestHeader(name, value) 从标准出发,通过替换旧的值为新的值,而不是替换的新值到旧值
    • getAllResponseHeaders()
    • getResponseHeader()
    • abort()
      假如没有onreadystatechange属性,因为不同的状态可以分别在 success , error , complete和statusCode 方法中进行处理。

    Data Types

    可用的data types 包括 text, html, xml, json, jsonp, and script。

    • text 和 html类型返回的数据不会经过处理。这些数据仅仅是简单的传递给成功回调函数,并通过jqXHR对象的responseText获得。
    • xml类型在传递给成功回调函数前通过jQuery.parseXML解析成XMLDocument,并通过
      jqXHR对象的responseXML获得。
    • json类型在传递给成功回调函数前通过jQuery.parseJSON 解析成JSON对象,并通过
      jqXHR对象的responseJSON 获得。
    • script 类型在传递给成功回调函数前将执行从服务器接收到的JavaScript并作为一个字符串传递给成功回调函数
    • jsonp类型会自动给请求的URL后面创建一个查询字符串参数 callback=? 。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。$.ajax()将会执行返回的JavaScript,调用JSONP回调函数,在JSON 对象传递给成功回调函数前。

    注意:Script和JSONP形式请求不受同源策略的限制。

    相关文章

      网友评论

          本文标题:jquery ajax 之 jqXHR 和 Data Types

          本文链接:https://www.haomeiwen.com/subject/sgwdattx.html