Ajax中数据请求结果不刷新问题

来源:互联网 发布:小猪cms和baocms 编辑:程序博客网 时间:2024/05/18 00:32

有时在一个页面中会经常调用某个ajax请求,但发现请求第一次之后,返回一个结果,后面再多次请求,结果还是不变,即使后台的数据真正变了也得不到最新的结果。

原来是请求的地址在浏览器的缓存中已经存在,且已有结果,所以直接将结果显示,这时我们可以通过变化访问请求地址字符串,每次都会触发访问。

如下语句:

var req; //定义变量,用来创建xmlhttprequest对象        function creatReq(request_id) // 创建xmlhttprequest,ajax开始        {            var url="a.aspx"; //要请求的服务端地址            if(window.XMLHttpRequest) //非IE浏览器及IE7(7.0及以上版本),用xmlhttprequest对象创建            {                req=new XMLHttpRequest();            }            else if(window.ActiveXObject) //IE(6.0及以下版本)浏览器用activexobject对象创建,如果用户浏览器禁用了ActiveX,可能会失败.            {                req=new ActiveXObject("Microsoft.XMLHttp");            }                        if(req) //成功创建xmlhttprequest            {                req.open("GET",url+"?request_id="+request_id+"&"+Math.random(),true); //与服务端建立连接(请求方式post或get,地址,true表示异步)                req.onreadystatechange = callback; //指定回调函数                req.send(null); //发送请求            }        }                function callback() //回调函数,对服务端的响应处理,监视response状态        {            if(req.readystate==4) //请求状态为4表示成功            {                if(req.status==200) //http状态200表示OK                {                    Dispaly(); //所有状态成功,执行此函数,显示数据                }                else //http返回状态失败                {                    alert("服务端返回状态" + req.statusText);                }            }            else //请求状态还没有成功,页面等待            {                document.getElementById ("ItemInfo").innerHTML ="数据加载中";            }        }


主要是下面这语:

req.open("GET",url+"?request_id="+request_id+"&"+Math.random(),true);

访问加+"&"+Math.random()后,保存每次访问的地址在缓存中都不存在,这样每次都会取到最新的数据。