解决同一页面无法多次使用XmlHttp发起Ajax的问题

这两天遇到一个问题:当该页面第一次发出Ajax请求的时候可以正常运行,但是从第二次调用开始就完全没有了反应。当然在firefox和ie中效果是不一样的。在firefox中并没有此问题。起先还一直以为是ie坏掉了。
之前有个错误的想法:就是XmlHttp只能使用一次send(),每次要使用新的XmlHttp。后来在js代码中添加了暴多alert硬是发现没有什么问题,每次servlet都过去了。
后来发现有这样一个原因。由于IE浏览器有缓存,第一次发送的Ajax请求确实被发送出去了。但是从第二次起IE浏览器发现缓存里面已经有请求的页面,于是Ajax请求将不再被发送出去。所以只要我们在url里加上+"&"+Math.random()就可以避免这个问题。当我做了这样修改后果真就可以在同一页面多次使用XmlHttp发起Ajax请求了。

附代码如下:
<script type="text/javascript">
function newXMLHttpRequest()
{
 var aVersions = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];
    var xmlreq = null;
    if (window.XMLHttpRequest)
    {
        try
        {
          xmlreq = new XMLHttpRequest();

        } catch (oError)
        {
          xmlreq = null;
        }
    }
    else if (window.ActiveXObject)
    {
            for (var i = 0; i < aVersions.length; i++ )
            {
                try
                {
            xmlreq = new ActiveXObject(aVersions[i]);
            if(xmlreq == null)
            {continue;}
            else{return xmlreq;}        
        }
        catch (oError)
        {
            xmlreq = null;
        }
        }
     }
       return xmlreq;
}


function CallFunc(phone)
{    
    var request =  null;
    request = newXMLHttpRequest();
    if(request==null) return;
      var url = "/ServletTest/Test?phonenum=" + phone + "&"+Math.random();
      request.open("GET", url, true);
      request.send(null);
}
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值