如何在jQuery Ajax中返回数据?

时间:2015-03-27 06:47:20

标签: javascript jquery ajax jqxhr

假设我有一个简单的功能:

    function test(url){
var AjaxCall = $.ajax({
        type: GET,
        url: url,
        data: {},
        success: function(data,status,xhr){
             return xhr
        },
        error: function(xhr,e){
             return xhr
        }
});


    if(xhr.status === 200)console.log('success');


}

所以我想要的是在调用函数之后处理函数内部的错误并在调用中添加回调来处理这些错误,例如,这可能吗?

1 个答案:

答案 0 :(得分:1)

如果你使用低于1.8的jQuery,是的,你可以设置async = false

  function test(url){
var AjaxCall = $.ajax({
        type: GET,
        url: url,
        async : false
        data: {},
        success: function(data,status,xhr){
             return xhr
        },
        error: function(xhr,e){
             return xhr
        }
});
}

请注意,这已被弃用,并且有充分理由

  

从jQuery 1.8开始,使用async:false和jqXHR($ .Deferred)   弃用;您必须使用success / error / complete回调选项   而不是jqXHR对象的相应方法,如   jqXHR.done()或不推荐使用的jqXHR.success()。

http://api.jquery.com/jquery.ajax/

function test(url){
    var AjaxCall = $.ajax({
            type: GET,
            url: url,
            data: {},
            complete: function(xhr, status){
                 if(xhr.status === 200)console.log('success');
            }
    });
}

不,您无法使用此方法从函数返回值。这不是异步的工作方式。如果你想要返回,你必须设置async = false,这种方法违背了使用ajax的目的。