当我使用AJAX将数据发布到服务器时,我想在this
函数中使用onreadystatechange
。
例如:
HTML
<div onclick=send.call(this)></div>
的JavaScript
function send () {
this.style.background = "#ccc";
var xml = new XMLHttpRequest();
xml.open("post", "/post.php", true);
xml.send("data");
xml.onreadystatechange = function () {
if (xml.readyState == 4 && xml.status == 200) {
this.style.background = "#fff";
}
}.call(this);
}
我认为它有效,但当我使用call
时,onreadystatechange
函数只运行一次。当我使用代码如:
xml.onreadystatechange = function () {
console.log(xml.state);
}
输出为:1 2 3 4
,但是当我使用
xml.onreadystatechange = function () {
console.log(xml.state);
}.call(this)
输出为:1
为什么?