问题描述
- javascript中的一个小问题(浏览器问题)
- 求助 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调用应该使用回调函数的方式处理服务端响应。采用全局变量,变量名虽然一样,但是由于并发的原因,其引用的对象可能不同时间能指向不同的对象,导致“错乱”。