ajax

    jQuery在全局对象 jQuery (也就是 $ )绑定了 ajax() 函数,可以处理AJAX请求。 ajax(url, settings) 函数需要接收一个URL和一个可选的 settings 对象,常用的选项如下:

    • async:是否异步执行AJAX请求,默认为 true ,千万不要指定为 false ;

    • method:发送的Method,缺省为 'GET' ,可指定为 'POST' 、 'PUT' 等;

    • contentType:发送POST请求的格式,默认值为 'application/x-www-form-urlencoded; charset=UTF-8' ,也可以指定为 text/plain 、 application/json ;

    • data:发送的数据,可以是字符串、数组或object。如果是GET请求,data将被转换成query附加到URL上,如果是POST请求,根据contentType把data序列化成合适的格式;

    • headers:发送的额外的HTTP头,必须是一个object;

    • dataType:接收的数据格式,可以指定为 'html' 、 'xml' 、 'json' 、 'text' 等,缺省情况下根据响应的 Content-Type 猜测。

    下面的例子发送一个GET请求,并返回一个JSON格式的数据:

    var jqxhr = $.ajax('apicategories', {

    dataType: 'json'

    });

    // 请求已经发送了

    不过,如何用回调函数处理返回的数据和出错时的响应呢?

    还记得Promise对象吗?jQuery的jqXHR对象类似一个Promise对象,我们可以用链式写法来处理各种回调:

    'use strict';



    function ajaxLog(s) {

    var txt = $('#test-response-text');

    txt.val(txt.val() + '\n' + s);

    }



    $('#test-response-text').val('');



    var jqxhr = $.ajax('apicategories', {

    dataType: 'json'

    }).done(function (data) {

    ajaxLog('成功, 收到的数据: ' + JSON.stringify(data));

    }).fail(function (xhr, status) {

    ajaxLog('失败: ' + xhr.status + ', 原因: ' + status);

    }).always(function () {

    ajaxLog('请求完成: 无论成功或失败都会调用');

    });