首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

多个Ajax 请求冲突的有关问题

2013-12-21 
多个Ajax 请求冲突的问题本帖最后由 purifypipi 于 2013-12-07 11:22:59 编辑我现在遇到这样一个情况有两

多个Ajax 请求冲突的问题
本帖最后由 purifypipi 于 2013-12-07 11:22:59 编辑 我现在遇到这样一个情况
有两个Ajax,当我发送第一个Ajax请求的时候
可以顺利激活后台的servlet,后台servlet也能返回数据到jsp页面上

但当我想发送第二个Ajax的时候,第二个Ajax可以激活后台的servlet
后台也能打印出数据,但是前台的jsp页面接收不到反馈的数据
这两个Ajax请求, url用的是同一个validate2.do? 只不过是每次带的参数不一样而已
请问是为什么呢? 1.是浏览器的问题? 2.还是浏览器缓存的问题,第二个Ajax请求和第一个冲突勒?
                 3.我还查到有人说在url后面再加个随机数 我也试了 没效果
我还特意把每次新创建的XMLHttpRequest作为局部变量
具体代码如下:
<script>    
    function doclick1() {
        var test, test2;
        var url = "validate2.do?id=" + test + "&id2=" + test2;
        var req; //局部变量
        if (window.XMLHttpRequest) {
            req = new XMLHttpRequest();
        } else if (window.ActiveXObject) {
            req = new ActiveXObject("Microsoft.XMLHTTP");
        }
        req.open("GET", url, true);
        req.onreadystatechange = function () { callback('doclick1', req); }
        req.send(null);
    }    function doclick2() {
    
        var td = event.srcElement;
        
        var url = "validate2.do?id3=" + td.id + "&id4=" + td.name;
        var req; //局部变量
        if (window.XMLHttpRequest) {
            req = new XMLHttpRequest();
        } else if (window.ActiveXObject) {
            req = new ActiveXObject("Microsoft.XMLHTTP");
        }
        req.open("GET", url, true);
        req.onreadystatechange = function () {
            callback('doclick2', req);
        }
        //send函数发送请求
        req.send(null);
    }
    function callback(p, req) {

        if (req.readyState == 4 && (0 == req.status || req.status == 200)) {
            var check = req.responseText;
            alert("看看接收到的p是多少" + p);
            show(check, p);
        };
    }

    function show(str, p) {
        if (p == 'doclick1') {
            var show = str;
            document.getElementById("status1").innerHTML = show;
            
        } else if (p == 'doclick2') {
            var show = str;
            document.getElementById("status1").innerHTML = show;
        }
    }
    
</script>


[解决办法]
 var url = "validate2.do?id3=" + td.id + "&id4=" + td.name+'&_dc='+new Date().getTime();


var url = "validate2.do?id=" + test + "&id2=" + test2+'&_dc='+new Date().getTime();


防止缓存试试
[解决办法]
还在纠结这个问题?给你段测试代码,希望能看得懂

<div id=view></div>
<input type=button onclick='ajax('id=1', func1)' value=bt1>
<input type=button onclick='ajax('id=2', func2)' value=bt2>

<script>
url = 'text.php'; //这是服务器端程序的url,按你的需要填写

//ajax调用入口,param 为发送的参数串, func 为返回时的回调函数
function ajax(param, func) {
  var req;
  if (window.XMLHttpRequest) {
     req = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
     req = new ActiveXObject("Microsoft.XMLHTTP");
  }
  req.open('GET', url+'?'+param + '&' + (new Date()).getTime());
  req.onreadystatechange = function() {
    if(req.readyState == 4 && (0 == req.status 
[解决办法]
 req.status == 200)) {
      var check = req.responseText;
      func(check);
    }
  }
  req.send();
}

function func1(v) {
  document.getElementById("view").innerHTML = v;
}
function func2(v) {
  document.getElementById("view").innerHTML = v + v;
}
</script>

热点排行