我想要做一个看似简单的ajax但却无法让它发挥作用。这是我的代码:
var xmlHttpRequest;
function processRequest(){
alert("process request called with " + xmlHttpRequest);
if(xmlHttpRequest.readyState==4){
alert("status = " + xmlHttpRequest.status);
if(xmlHttpRequest.status == 200){
}
} else {
alert("process request no luck readyState = " + xmlHttpRequest.readyState);
}
alert("process request exiting");
}
function updateCount(customerID, productID) {
xmlHttpRequest = init();
function init(){
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert("Your browser does not support AJAX!");
}
}
xmlHttpRequest.open("GET", url, true);
xmlHttpRequest.onreadystatechange = processRequest();
}
就像我在主题行中说的那样,readyState总是1.我做错了什么?
谢谢! 涡
答案 0 :(得分:2)
在开始请求之前,您正在调用processRequest。
xmlHttpRequest.onreadystatechange = processRequest();
错了,必须
xmlHttpRequest.onreadystatechange = processRequest;
这将存储对您的方法的引用,而不是直接调用它。
一旦就绪状态发生变化,xmlHttpRequest
对象就会尝试调用此引用。
答案 1 :(得分:1)
在xmlHttpRequest.send();
之后添加xmlHttpRequest.onreadystatechange = processRequest;
。