Ajax readyState始终为1

时间:2010-06-22 16:17:26

标签: javascript ajax

我想要做一个看似简单的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.我做错了什么?

谢谢! 涡

2 个答案:

答案 0 :(得分:2)

在开始请求之前,您正在调用processRequest。

xmlHttpRequest.onreadystatechange = processRequest();

错了,必须

xmlHttpRequest.onreadystatechange = processRequest;

这将存储对您的方法的引用,而不是直接调用它。

一旦就绪状态发生变化,xmlHttpRequest对象就会尝试调用此引用。

答案 1 :(得分:1)

xmlHttpRequest.send();之后添加xmlHttpRequest.onreadystatechange = processRequest;