admin管理员组

文章数量:1392059

I'm tying to do what seems like a simple ajax but can't get it to work. Here's my code:

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(); 
}

Like I said in the subject line, readyState is always 1. What am I doing wrong?

Thanks! Eddy

I'm tying to do what seems like a simple ajax but can't get it to work. Here's my code:

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(); 
}

Like I said in the subject line, readyState is always 1. What am I doing wrong?

Thanks! Eddy

Share Improve this question edited Jun 22, 2010 at 16:18 jantimon 38.2k23 gold badges126 silver badges193 bronze badges asked Jun 22, 2010 at 16:17 EddyEddy 3,72316 gold badges63 silver badges91 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 2

You are calling processRequest before you start your request.

xmlHttpRequest.onreadystatechange = processRequest();

is wrong and has to be

xmlHttpRequest.onreadystatechange = processRequest;

This will store a reference to your method instead of calling it directly.

As soon as the ready state changes, the xmlHttpRequest object trys to call this reference.

Add xmlHttpRequest.send(); after xmlHttpRequest.onreadystatechange = processRequest;.

本文标签: javascriptAjax readyState always 1Stack Overflow