2012-02-08 77 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