求助 javascript中的一個小問題
<
html>
<
head>
<
title>Ajax 簡單的服務器請求
<
script type="text/javascript">
var xmlobj;
function CreateXMLHttpRequest()
{
if(window.ActiveXObject) //如果當前浏覽器支持ActiveXObject則創建ActiveXObject對象
{
xmlobj = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest) //如果當前浏覽器支持XMLHttpRequest則創建XMLHttpRequest對象
{
xmlobj = new XMLHttpRequest();
}
}
function Req(q) //主程序函數
{
CreateXMLHttpRequest(); //創建對象
xmlobj.onreadystatechange = StatHandler; //判斷URL調用的狀態值並處理
xmlobj.open("GET", "text.php", true); //text.php是累加程序
xmlobj.send(null); //設置不發送給服務器任何數據
function StatHandler()
{
if(xmlobj.readyState == 4 && xmlobj.status == 200) //如果URL成功使用警告框輸出文本內容
{
b=xmlobj.responseText;
//alert(b);
//alert(xmlobj.a);
q.innerHTML=b;
//b=null; //這裡去掉注釋還是不行
}
};
}
<
/script>
<
body>
<
form action="">
<
div id='f1' onClick="Req(this);">點擊1
<
div id='f2' onClick="Req(this);">點擊2
<
div id='f3' onClick="Req(this);">點擊3
<
div id='f4' onClick="Req(this);">點擊4
<
div id='f5' onClick="Req(this);">點擊5
<
br>
<
br>
<
br>
<
br>
在IE浏覽器中不能累加 ,在其他浏覽器中就沒有問題 ,求解決!!!
是代碼問題,不是浏覽器兼容問題。錯在var xmlobj;這個全局變量。你的ajax調用應該使用回調函數的方式處理服務端響應。采用全局變量,變量名雖然一樣,但是由於並發的原因,其引用的對象可能不同時間能指向不同的對象,導致“錯亂”。