【问题标题】:ajax complete function invoking after dom is readydom准备好后调用ajax完成函数
【发布时间】:2013-05-30 09:55:02
【问题描述】:
我需要发出一个 ajax 请求,然后处理一些从服务器返回的数据。我想早点提出这个请求,然后文件就准备好了。但是我只有在文件准备好后才能处理数据。我有一个想法来做这样的事情:
$.when($(document).ready(),
$.ajax(/*some request*/)).done(function(){//processing data from the server});
它将如何运作?或者有没有其他选择可以得到我想要的结果
【问题讨论】:
标签:
javascript
jquery
ajax
document-ready
.when
【解决方案1】:
尝试使用:$( document ).ajaxComplete(function() {}
【解决方案2】:
不使用异步辅助库,
您可以使用一些标志和辅助函数,虽然不是最优雅的,但它可以工作
var docReady = false;
var responseReady = false;
var tryEvaluateResponse = function() {
if(docReady && responseReady) {/*processing data from the server*/}
};
$(document).ready(function() {
docReady = true;
tryEvaluateResponse();
});
$.ajax(/*some request*/)).done(function() {
responseReady = true;
tryEvaluateResponse()
});
【解决方案3】:
不,这不起作用,因为$(document).ready() 不会返回承诺。但是你可以这样做
var request = $.ajax(/*some request*/);
$(document).ready(function() {
request.done(function(){
//processing data from the server
});
});