2010-06-22 103 views
0

我正在试图做一些看起来像一个简单的ajax,但无法让它工作。这是我的代码:Ajax readyState always 1

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.我做错了什么?

谢谢! Eddy

回答

1

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

2

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

xmlHttpRequest.onreadystatechange = processRequest(); 

是错误的,必须是

xmlHttpRequest.onreadystatechange = processRequest; 

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

只要就绪状态改变,xmlHttpRequest对象就会调用该引用。

+0

非常感谢Ghnommy和digitalFresh!它的作品非常漂亮。我正在努力弄清楚这个API所做的阻塞/等待在哪里。我猜javascript以神秘的方式工作:) – Eddy 2010-06-22 20:33:38