这是我在 Lynda.com ajax 类(class)中的一些代码。
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 检查必须包含在您在上面看到的函数中,否则它将无法工作。这是怎么回事?
最佳答案
您分配给 onreadystatechange
的函数是一个事件处理程序。您在调用 send()
之前分配它,这样您就不会错过请求引发事件的时间。如果您没有检查事件处理程序中的 request.readyState
,您怎么知道请求状态何时实际发生了变化? send()
方法默认是非阻塞的。
另一种方法是通过在某个任意时间间隔进行轮询来检查 readyState
,这绝对不是我们想要的。
就像上面评论者建议的那样,MDN医生很好。
关于javascript - 初学者 AJAX 类(class) - 为什么我必须将 request.readyState 包装在一个函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19107308/