1

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

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);
    }
  });
}
4

2 回答 2

0

尝试类似:

function checkstatus( callback ) {
   $.ajax({
    .......
    success: function(data, textStatus, jqXHR){
        callback(data);
    }
   });
}
//and callback
checkstatus(function (data) {    
    alert(data);
});
于 2012-12-03T04:22:58.187 回答
0

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

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

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

   return statuses;
}
于 2012-12-03T04:25:02.020 回答