2012-12-03 34 views
0

如何检查并等待服务器滞后的保存功能来完成,它返回一个Ajax对象jqxhr,我要检查,如果Ajax请求是否完成我做别的事情之前。如何使用延迟值检查ajax是完成还是失败?

注:保存功能已经成功,完全错误等。我想,以确保其完成之前,我做任何事情,使我dotn得到了一个未定义当我使用jqxhr.status。

$(document).ready(function() { 
     $(function() { 
      $("#save").click(function() { 

      save().then(function(jqxhr){// check status... 


        alert(" jqxhr status " + jqxhr.status); <--getting undefined first 
        //200 for success 
        var stat = jqxhr.status; 
        //alert(" inside 200 status "+stat); 
        if (stat == 200) { 
         console.log("inside 200"); 

         alert(" inside 200 status " + stat); 

        } 
        if (stat == 400) { 
         console.log("inside 400"); 
         alert(" inside 400 status " + stat); 

        } else { 

         alert(" inside 200 status " + stat); 
        } 

       }); 

      }); 
     }); 
    });​ 
+0

只是习惯了这样的事实:这是** async **调用。你需要相应地处理它。你*可以*使xhr请求阻止呼叫... **但是**我根本不会推荐,因为它在等待时冻结UI。 – poncha

+1

你为什么要调用'save()'两次? –

+0

我需要得到的jqxhr状态的值保存函数返回jqxhr对象。我愿意提出建议..我只想在完全完成ajax请求后才执行if语句。如何等待或知道Ajax请求是complete..if我尝试打印jqxhr.status年初我得到了一个未定义,sicne阿贾克斯尚未完成 – user244394

回答

0

保存()函数(它实际上只是一个AJAX调用)返回一个承诺,所以你可以使用则(),以链代码:

save().then(function(jqxhr){// check status...}); 
+0

它与传递成功和失败回调有什么不同?一旦链接结束在这里,你回到外面的代码,它是怎么回事Ajax请求返回之前进行... – poncha

+0

@poncha好吧,我会删除我的答案,因为我其实并不清楚背后究竟是保存() – Christophe

+0

取消删除我的答案,因为现在问题包含save()函数。 – Christophe

相关问题