ajax调用过程中,千万不要把request覆盖了

来源:互联网 发布:淘宝微信返现是真的吗 编辑:程序博客网 时间:2024/05/01 00:54

今天调了一天的错误,非常郁闷,直到晚上才发现,原来是页面中定义的XMLHttpRequest对象是个全局对象,但有两个ajax调用都引用了它,每隔几分钟就会出现问题,还是莫名其妙的问题,我以为是数据解析有问题或后台问题,调啊调,结果是两个ajax调用,第二个调用了同一个request,也就是覆盖了第一个的,害得第一个偶尔会得到第二个的值,导致解析出错.......

以后每个ajax调用一定不要用全局的变量保存request.而是临时生成,然后将request绑定它的到处理上.


function test(){
    var temp_request = createXMLHttpRequest();
    deal_change.request = temp_request;
    temp_request.onreadystatechange=deal_change;
    temp_request.open("GET",url,true);
    temp_request.setRequestHeader("If-Modified-Since","0"); //不缓存Ajax
    temp_request.send(null);
}

function deal_change()
{
var rStr;
try{
   if(deal_change.request.readyState==4)\\
通过deal_change.request引用调用它的request
   { 
    if(deal_change.request.status==200)
    { 
     rStr = trim(deal_change.request.responseText);

                     ...................
}}}


切记切记.
当然若使用 框架就不用这么麻烦了.

0 0