如何在函数中返回Ajax的值?

时间:2012-12-03 04:08:49

标签: javascript jquery 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);
    }
  });
}

2 个答案:

答案 0 :(得分:0)

尝试类似:

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

答案 1 :(得分:0)

您无法使用异步请求从单独的函数返回值,因为.ajax调用之后的代码(您将返回的位置)将在 ajax回调之前执行。相反,您应该在回调上创建一个依赖项。

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

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

   return statuses;
}