1

这是我的 Lynda.com ajax 课程中的一些代码。

var request = new XMLHttpRequest();

request.open('GET', 'data.txt');
request.onreadystatechange = function()
{
    if (request.readyState===4)
    {
        console.log(request);
        document.writeln(request.responseText);
    }
}
request.send();

在上一课中,我们检查了request.status的值,它没有包装在函数中,并且运行良好。但是现在,没有任何解释,request.readyState检查必须包含在您在上面看到的函数中,否则它将不起作用。这是怎么回事?

4

2 回答 2

1

起作用,只是过早地。当我了解这一点时,我发现提醒它的值很有帮助,readyState这样我就可以观察正在发生的事情:

request.onreadystatechange = function()
{
    alert(request.readyState);
    ...

这是状态列表,由XMLHttpRequest 中不同的 readystates 是什么意思提供,我该如何使用它们?

State  Description 0      
The request is not initialized 1     
The request has been set up 2   
The request has been sent 3    
The request is in process 4   
The request is complete
于 2013-10-01T03:44:36.963 回答
1

您分配给的函数onreadystatechange是事件处理程序。您在调用之前分配它,send()这样您就不会错过请求引发的事件。如果您没有签request.readyState入事件处理程序,您如何知道请求状态何时实际发生了变化?默认情况下,该send()方法是非阻塞的。

readyState另一种方法必须是通过在某个绝对不希望的任意间隔轮询来检查。

就像上面的评论者建议的那样,MDN文档非常好。

于 2013-10-01T03:36:57.637 回答