2

如何知道所有 ajax 调用何时完成?,现在我只是使用延迟超时来等待请求完成,这是更好的方法?我想确保 ajax 请求完成......

4

6 回答 6

4

XMLHttpRequest对象具有readyState属性onreadystatechange,您可以像这样操作:

var xmlhttp;
if (window.XMLHttpRequest) { 
    xmlhttp = new XMLHttpRequest();
}
else { 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) { // xmlhttp.status==200 == successful request
        // What you want here
    }
}
xmlhttp.open("GET", "foo_url.php", true);
xmlhttp.send();
}​

如果您使用的是该库,则可以使用jQuery更简单地进行操作:

$.ajax({
    url: 'foo_url.php',
    complete: function() {
        // What you want here
    }
});
于 2012-05-07T09:28:24.937 回答
3

如果您使用 jQuery 的 AJAX,它有一个完整的选项,请参阅文档

$.ajax({
    url: 'foo.php',
    complete: function(jqXHR, textStatus) {
        alert('AJAX call complete');
    }
});
于 2012-05-07T09:29:40.333 回答
0

如果您使用 xmlhttp 对象进行 ajax 调用,那么当 xmlhttp.readyState==4 时,则认为 ajax 请求已完成。

于 2012-05-07T09:40:04.477 回答
0
$.ajax({
url: 'abc.php',
data: "&id=" + id ;
complete: function(data) {
    alert(data.responseText);
}
});
于 2012-05-07T10:25:00.183 回答
0
   xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    // This is when your Ajax request is complete 
                }
            }
于 2012-05-07T09:27:58.030 回答
0

这取决于您的图书馆;例如,如果您使用的是 jquery,那么您可以使用success:参数,如果是 javascript,那么您可以使用if (xmlhttp.readyState==4 && xmlhttp.status==200)语句。

于 2012-05-07T09:30:41.223 回答