2012-12-03 51 views
1

我有以下功能。我如何返回成功的值,错误,在函数中完成?如何返回函数中的Ajax值?

function checkstatus() { 
    $.ajax({ 
    url: "foo.json", 
    beforeSend : function(jqXHR, settings) { 
     console.info('in beforeSend'); 
     console.log(jqXHR, settings); 
    }, 
    error : function(jqXHR, textStatus, errorThrown) { 
     alert(" 500 data still loading"+ jqXHR + " : " + textStatus + " : " + errorThrown); 
     console.info('in error'); 
     console.log(jqXHR, textStatus, errorThrown); 
    }, 
    complete : function(jqXHR, textStatus) { 
     alert(" complete "+ jqXHR + " : " + textStatus); 
     console.info('in complete'); 
     console.log(jqXHR, textStatus); 
    }, 
    success: function(data, textStatus, jqXHR){ 
     alert(" success "+ jqXHR + " : " + textStatus); 
     console.info('in success'); 
     console.log(data, textStatus, jqXHR); 
    } 
    }); 
} 
+5

你不返回值。相反,您将一个回调函数传递给您的'checkstatus'函数,并在'$ .ajax'回调函数中调用它。 –

回答

0

尝试类似:

function checkstatus(callback) { 
    $.ajax({ 
    ....... 
    success: function(data, textStatus, jqXHR){ 
     callback(data); 
    } 
    }); 
} 
//and callback 
checkstatus(function (data) {  
    alert(data); 
}); 
+0

callback()是一个预定义的函数吗? callback()来自哪里? – user244394

+0

成功函数中的回调是从checkstatus的“回调”参数引用的,而这又是函数,它返回checkstatus函数中的数据,这些数据在ajax之后调用,如下所示//回调函数 –

0

你不能从一个单独的功能与异步请求返回值,因为.ajax通话(你会回来)后的代码会前执行 ajax回调。相反,你应该创建一个回调的依赖关系。

如果请求是同步的,你可以这样做:

function checkStatus() { 
    var statuses = []; 
    $.ajax(... 
     success: function (data, textStatus, jqXHR) { 
      statuses.push(textStatus); 
     } 
    ... 

    return statuses; 
}