我试图在 javascript 中编写一个 AJAX 类主要用于学习目的,我遇到了这个问题#39; t能够解决。
我想将onreadystatechange
触发的任何AJAX响应传递给类属性以供进一步使用,但该属性以我尝试格式化代码的每种不同方式返回null
。
我认为这与范围和/或执行顺序有关,但我无法弄清楚。
示例:
function Ajax() {
var self = this;
this.response = null; //the property in question
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
self.response = xmlhttp.responseText; //responseText is set; it works only here
}
};
xmlhttp.open("POST", "foo.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("foo=bar");
}
var ajax = new Ajax();
alert(ajax.response); //returns the default value
php文件只包含一个打印,因为这是一个例子:
<?php
print_r($_POST);
我尝试将xmlhttp
对象传递给单独的方法,但这也没有用。
将xmlhttp
对象存储为类的属性也不起作用,它不会设置属性,因为它甚至不会因某种原因超过状态0。
如果有人在这里解释我遗失或误解的话,我会感激不尽。谢谢你的时间。