Ajax避免IE缓存造成每次不向服务器提交数据

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs" Inherits="Default4" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        var xmlHttp;
        function createXMLHttpRequest() {
            try {
                xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");//IE6
            } catch (e) {
                try {
                    xmlHttp = new ActiveXObject("Micorsoft.XMLHTTP");
                } catch (e) {
                    xmlHttp = new XMLHttpRequest();
                }
            }
        }

        function startRequest() {
            createXMLHttpRequest();
            xmlHttp.open("get", convertURL("Default4.aspx?id=test"), true);
            xmlHttp.onreadystatechange = function() {
                if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                    document.getElementById("msg").innerHTML = xmlHttp.responseText;
                }
            }
            xmlHttp.send(null);
        }


        /*利用"时间戳"的伪地址骗过浏览器.  
        在发送url请求时加上一个参数,这个参数是时间戳,就是系统时间.
        (以毫秒为单位的数字类型).
        */
        function convertURL(url) {
            var timestamp = new Date().valueOf();
            if (url.indexOf("?") >= 0) {
                url +="&+=" + timestamp;
            } else {
                url += "?+=" + timestamp;
            }
            return url;
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <input type="button" οnclick="startRequest();" value="测试" />
    <div id="msg">
    </div>
    </form>
</body>
</html>

 

 

protected void Page_Load(object sender, EventArgs e)
    {
        if (!String.IsNullOrEmpty(Request.QueryString["id"]))
        {
            Response.Write(DateTime.Now);
            Response.Write("<br>");
            Response.Write(Request.Url);
            Response.Write("<br>");
            Response.Write(Request.UrlReferrer);
            /*这里设置浏览器缓存页面过期时间,这里设置为0分钟则代表浏览器不缓存,每次提交都会和服务器交互.
            *浏览器缓存的概念:当客户发出第一次请求的时候,浏览器会把这次提交的数据放在缓存中,当该用户再次访问
            *该页面的时候,浏览器会去查找该页面缓存是否有改动,有则再次与服务器交互,无则调用浏览器缓存.*/
            // Response.Expires = 0;
            
	    /*因为请求的是当前页面,除了返回上面输出的信息外还会返回整个HTML文档,这样就不是局部
	    *刷新了(也就是服务器回传postback后会将整个页面再次输出),所以我们输出以上信息后,让服务器停止对客户端响应,这样客户端只会得到一小部分
	    *你想要更新的数据,这就是局部刷新.(当然做法还有放到HttpHandle或WebService中进行操作)
            */
	    Response.End();
        }
        else
        {
            if (IsPostBack)
            {
                Response.Clear();
                Response.End();
            }
        }
    }
 

 

HELP:

JavaScript valueOf() 方法

定义和用法

valueOf() 方法返回 Date 对象的原始值。

该原始值由 Date 对象派生的所有对象继承。

valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。

返回值

date 的毫秒表示。返回值和方法 Date.getTime 返回的值相等

 

定义和用法

getTime() 方法可返回距 1970 年 1 月 1 日之间的毫秒数。

语法

dateObject.getTime()

返回值

dateObject 指定的日期和时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数。

提示和注释:

注释:该方法总是结合一个 Date 对象来使用。

实例

例子 1

在本例中,我们将取得从 1970/01/01 至今的毫秒数,并输出它:

<script type="text/javascript">

var d = new Date()
document.write(d.getTime() + " milliseconds since 1970/01/01")

</script>

输出:

<script type="text/javascript"><!--mce:0--></script>1261227723484 milliseconds since 1970/01/01

例子 2

在下面的例子中,我们将计算出从 1970/01/01 至今有多少年:

<script type="text/javascript">

var minutes = 1000*60
var hours = minutes*60
var days = hours*24
var years = days*365
var d = new Date()
var t = d.getTime()
var y = t/years
document.write("It's been: " + y + " years since 1970/01/01!")

</script>

输出:

<script type="text/javascript"><!--mce:1--></script>It's been: 39.9932687558346 years since 1970/01/01!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值