2014-01-08 44 views
1

這裏是我的代碼:XMLHttpRequest狀態爲0爲什麼?

var xmlhttp; 

function HttpObject(str) 
{ 
    //alert("iam in process request"); 

    if (window.XMLHttpRequest) 
    { 
     xmlhttp = new XMLHttpRequest(); 
     alert ("xmlhttp"); 
    } 
    else if(window.ActiveXObject) 
    { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     alert ("ms.xmlhttp");   
    } 
    else 
    { 
     XmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
    } 

    alert ("rdystate: " + xmlhttp.readyState); 
    alert ("status: " + xmlhttp.status); 
    alert ("Text: "  + xmlhttp.statusText); 
    xmlhttp.onreadystatechange = processRequest(); 
    xmlhttp.open("POST",'/CountryTest.do',true); 
    xmlhttp.send(null); 
} 

function processRequest() 
{ 
    if (xmlhttp.readyState === 0) { 
     alert("u r in 0 :: The request is not initialized "); 
    } 

    var target = document.getElementById("curlist"); 
    var res = xmlhttp.responseText; 
    alert(res); 
    if (xmlhttp.readyState === 4 && xmlhttp.status === 200) 
    { 
     alert("in readystate"); 
    } 
    else 
    { 
     alert("error in readystate"); 
    } 
} 

它總是顯示status 0

curlist是我的國家狀態PROG

的ID任何一個可以說我在哪裏的問題?

/CountryTest.do是servlet的url模式。

回答

3
xmlhttp.onreadystatechange = processRequest(); 

你剛纔叫processRequest立即,並將其返回值分配給onreadystatechange

你想分配函數本身,而不需要調用它。

0
xmlhttp.onreadystatechange = function() 
{ 
if (xmlhttp.readyState=='4') 
{ 
    alert(xmlhttp.responseText); 
} 
}