Ajax中的时间戳应用<转>

ajax的时间戳
当你的ajax需要的数据是及时更新的,也就是说在没有刷新页面的情况下,得到其他操作的新数据,你的ajax提交url中加入一个时间戳,这样,就可以避免页面使用缓存了,原理是:时间戳本事就是一个随时更新的变量,时间戳只是一个叫法,你可以这么理解:你的url中加了一个随时更新的变量,,那么,提交时是不会使用缓存的。
var url = "insertData.jsp?textName="+nameAdd+"&date="+new Date().getTime();
也可以用时间的数值形式:
var url = "insertData.jsp?textName="+nameAdd+"&date="+(new Date()).valueOf();

var url = "insertData.jsp?textName="+nameAdd+"&date="+Math.random();

利用这个方法,可以实际项目开发中解决像更换验证码图片的及相类似的问题。
如:
<body>
       <img src="ImgeServer"/>
       <a onclick="changImg()" href="#">换一张</a>
</body>
当每次点击一下"换一张"这个链接时,就会触发onclick对应的changImg() 这个事件,在changImg()这个事件中就每次都改变ImgeServer这个servlet(利用在url后加上时间戳)。

以下是校验用户名的一个的.js文件例子:
// 定义用户校验的方法
function verify(){
    //测试verify()这个方法
    alert("调用到了verify1.js中的verify()方法!");
     //下面是连写的方式

    //在jquery中,可以像StringBuffer.append()方法来拼接字符串一样,
    //将语句写成一个语句链
    //如: StringBuffer buffer=new StringBuffer();
    //     buffer.append("abc").append("def").append("ghi");

    //每次点击校验按钮: 在FireFox下,页面总会重新请求,次数累加;
    //                   而在IE下,页面不会重新请求,次数不累加,原因是IE下,每次读取的都是缓存(Cache)中的数据
     // var userName=$("#name").val();
       var url="AjaxServer?name="+$("#name").val();
      //调用在url中增加时间戳的方法
       url=addUrl(url);
       $.get(url,null,function(data){
           $("#result").html(data);
       });
}

//给url增加时间戳,利用时间戳来使页面提交的时候,每次的url都不一样,这样就骗过IE浏览器,不会去读取缓存中的数据了
function addUrl(url)
{
    //var timetemp = (new Date()).getTime();
    var timetemp = (new Date()).valueOf();
    //alert(timetemp); //时间戳
    if(url.indexOf("?")>-1)
    {
       url +=   "&t=" + Math.random();
       alert(url);
    }
    else

     {
       url = url + "&?t=" + timetemp;
       alert(url);
     }
    return url;
}

posted @ 2012-10-13 10:38  人生如若初见  阅读(562)  评论(0编辑  收藏  举报