2010-06-22 4 views
0

Je suis en train de faire ce qui semble être un simple ajax mais je n'arrive pas à le faire fonctionner. Voici mon code:Ajax readyState toujours 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(); 
} 

Comme je l'ai dit dans la ligne de sujet, readyState est toujours 1. Qu'est-ce que je fais mal?

Merci! Eddy

Répondre

1

Ajouter xmlHttpRequest.send(); après xmlHttpRequest.onreadystatechange = processRequest;.

2

Vous appelez processRequest avant de démarrer votre requête.

xmlHttpRequest.onreadystatechange = processRequest(); 

est faux et doit être

xmlHttpRequest.onreadystatechange = processRequest; 

Cela stocker une référence à votre méthode au lieu d'appeler directement.

Dès que l'état prêt est modifié, l'objet xmlHttpRequest essaie d'appeler cette référence.

+0

Merci beaucoup pour Ghnommy et digitalFresh! Cela fonctionne magnifiquement. J'avais du mal à comprendre où se trouve le blocage/l'attente de cette API. Je suppose que javascript fonctionne de manière mystérieuse :) – Eddy

Questions connexes