2012-02-08 79 views
0

HTML:一些錯誤與XMLHTTP請求文本的響應處理

 <div id="phone" onclick="getNum('ph')" class="onClic">phone number</div> 
     <div id="fax" onclick="getNum('fx')" class="onClic">fax number</div> 

的JavaScript:

<script type="text/javascript"> 
function getNum(rq){ 

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

xmlhttp.onreadystatechange=function(){ 
        if (xmlhttp.readyState==4 && xmlhttp.status==200 && xmlhttp.responseText.trim()!="fail"){ 
         if(rq=="ph"){ 
         document.getElementById("phone").innerHTML="99066744"; 
         }else if(rq=="fx"){ 
         document.getElementById("fax").innerHTML="93393368"; 
         } 
         alert("done"); 
        }else{ 
         alert("something went wrong"); 
        } 
        } 

xmlhttp.open("GET","includes/getnum.php?idu=1&rq="+rq,true); 
xmlhttp.send(); 
} 
</script> 

getnum.php輸出存在或是"fail"。當我點擊 在phonefax元素上觸發JavaScript時,我得到alert("something went wrong")兩次,然後我得到alert("done")一切工作正常,但只要請求成功,我不應得到alert("something went wrong")代碼中可能出現錯誤。

回答

0

這種行爲很可能是因爲大多數(modern'ish)瀏覽器會觸發readyState事件1,2,特別是3readyState 3就是這樣的一種叫做交互模式,它在請求期間觸發,所以你可以截取和發現數據,同時它仍然是流媒體。

因此,在短期的話,你onreadystatechange處理程序被調用多次(那應該如何),並因爲你檢查readyState === 4它會打電話給你else情況下爲所有其他案件。

要確定是否真的出現了問題,您應該單獨在那裏檢查status codes