ajax连续使用两个responseText返回数据出错,前一个responseText返回数据丢失
时间:2008-09-28 10:11:28
来源:论坛整理 作者: 编辑:chinaitzhe
document.getElementById("scxx").innerHTML=req.responseText;
xskh(kh);
scyfh();
}
其中xskh(kh)的结果是:
if(req.readyState==4 && req.status==200){
document.getElementById("lnfhjl").innerHTML=req.responseText;
}
其中scyfh()的内容是
if(req.readyState==4 && req.status==200){
document.getElementById("yfh_show").innerHTML=req.responseText;
}
现在的运行结果是xskh(kh)的结果被scyfh()的结果取代,两个地方显示的都是scyfh()的结果,把scyfh()取消后,xskh(kh)显示结果正常
网友回复:你的req对像不可以共享
看下面这段文章(在网上转载)
在一般的Ajax引用中,也许只要一个XMLHttpRequest对象,而且onreadystatechange的处理函数必须没有参数,有参数就出错,
所以,一般经常会写一个全局变量XMLHttpRequest,再在processFunction中用到这个全局变量,但是如果我要建立几个
XMLHttpRequest的并发连接怎么办呢?这个就不能用全局变量了,但是处理函数又不能有参数,怎么搞,可以这样:
function DoAjax ()
{
var xhr=new XMLHttpRequest();
xhr.onreadystatechange=processFunction(xhr);
xhr.open("GET",url,true);
xhr.send(null);
}
function processFunction(_xhr)
{
return function()
{
//do something with XMLHttpRequest;
if(_xhr.readState!=4||_xhr.status!=200) return false;
alert(_xhr.responseText);
};
}
怎么理解?虽然processFunction函数有参数,但是它返回的函数没有参数!而这两个函数之间是怎么进行的值传递呢?
这里不妨引用一句话:
“为了函数能够正确的执行,需要被函数使用的,词法作用域中的,非全局数据,
存在于函数的闭包之中。”
可以这样理解:
当我们把processFunction()返回的函数,在processFunction之外使用的时候,依然要记得自己被定义时的上级作用域中的各种变量的值。这些需
要被记住的值,就是“闭包”。
关键字:两个,
上一篇:多线程读写文件
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面