我怎么知道ajax请求何时完成

时间:2012-05-07 09:25:14

标签: javascript ajax

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

6 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

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

$.ajax({
    url: 'foo.php',
    complete: function(jqXHR, textStatus) {
        alert('AJAX call complete');
    }
});

答案 2 :(得分:0)

   xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    // This is when your Ajax request is complete 
                }
            }

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果您正在使用xmlhttp对象进行ajax调用,那么当xmlhttp.readyState == 4时,它将被视为ajax请求已完成。

答案 5 :(得分:0)

$.ajax({
url: 'abc.php',
data: "&id=" + id ;
complete: function(data) {
    alert(data.responseText);
}
});