2 qq122453418 qq122453418 于 2013.07.28 20:02 提问

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浏览器中不能累加 ,在其他浏览器中就没有问题 ,求解决!!!

1个回答

viscent_huang
viscent_huang   2013.09.02 09:57
已采纳

是代码问题,不是浏览器兼容问题。错在var xmlobj;这个全局变量。你的ajax调用应该使用回调函数的方式处理服务端响应。采用全局变量,变量名虽然一样,但是由于并发的原因,其引用的对象可能不同时间能指向不同的对象,导致“错乱”。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!