Ajax ReadyState всегда 1 - PullRequest
       4

Ajax ReadyState всегда 1

0 голосов
/ 22 июня 2010

Я пытаюсь сделать то, что кажется простым 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. Что я делаю не так?

Спасибо! Eddy

Ответы [ 2 ]

2 голосов
/ 22 июня 2010

Вы вызываете processRequest перед началом запроса.

xmlHttpRequest.onreadystatechange = processRequest();

неверно и должно быть

xmlHttpRequest.onreadystatechange = processRequest;

Это будет хранить ссылку на ваш метод, а не вызывать его напрямую.

Как только состояние готовности изменяется, объект xmlHttpRequest пытается вызвать эту ссылку.

1 голос
/ 22 июня 2010

Добавить xmlHttpRequest.send(); после xmlHttpRequest.onreadystatechange = processRequest;.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...