function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("demo").innerHTML = xhttp.responseText;
}
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
}
根据我的理解,应首先在服务器上发出文件请求并发送给它。一旦服务器准备好处理请求,就应该执行匿名函数。我无法理解执行的流程。
我也很困惑何时在函数true
的参数中使用false
或open()
。
答案 0 :(得分:1)
onreadystatechange
是一个事件处理程序。事件发生时调用该函数。这很像:
document.body.onclick = function () { ... };
赋值只是将属性赋给属性,它不会立即调用它。最后需要()
(或使用apply
或类似的东西)。
我也很困惑何时在函数open()的参数中使用true或false。
将其设置为false
已弃用,因此请勿执行此操作。 true
是默认设置,因此您可以完全省略它。
答案 1 :(得分:0)
让我们从xhttp.open("GET", "ajax_info.txt", true)
开始
open方法需要3个参数
设置为false已被弃用,因此您可以省略第3个参数,因为它默认为
xhttp.send()
发起请求
xhttp.onreadystatechange
是一个事件处理程序,不会立即触发,但会在状态发生变化时触发。
答案 2 :(得分:-1)
只是为了澄清此事:
当状态更改请求时,function ()
称为onreadystatechange
。 (顺便说一下:function()
是一个匿名函数,作为<{1}} eventListener的
当XMLHttpRequest对象的状态发生更改时,分配给onreadystatechange
eventListener的函数称为 everytime 。
所以你应该知道这个函数被多次调用
您可以使用onreadystatechange
语句进行检查,如此
if
防止不必要的多次执行
(检查其他xhttp.onreadystatechange = function () {
// when using on a local - file
if (xhttp.readyState === 4) {
// ...do something
}
}
可用于加载屏幕等等)
传递给readyState
函数的true
或false
参数表示调用是否应该是异步的。意思是如果它应该等到,服务器返回响应。如果脚本等待,则整个页面将冻结,直到呼叫结束。
以下是可能参数MDN Documentation open的列表:
open
如果您不安全,我建议您阅读文档,功能,对象等。
这里有一些很好的链接到这个特定主题(XMLHttpRequest):
MDN XMLHttpRequest
这里是&#34;流&#34;
的小型可视化void open(
DOMString method, // GET, POST, ...
DOMString url, // URL
optional boolean async, // if true script continuse executing
optional DOMString user, // Username if needed
optional DOMString password // password if needed
);