`

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

    博客分类:
  • Ajax
阅读更多
<%@ 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" onclick="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!
分享到:
评论

相关推荐

    ajax清除IE缓存技术文档

    **Ajax清除IE缓存技术文档** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,大大提升了...

    如何 不使用ajax缓存

    在Web开发中,Ajax技术因其异步通信特性而被广泛应用,但在实际项目中可能会遇到缓存问题,比如在进行数据更新操作时(如删除、修改),由于浏览器缓存的存在导致请求返回的是之前的数据状态而非最新的服务器数据...

    AJAX 缓存问题的两种解决方法(IE)

    为了防止IE浏览器缓存AJAX请求的结果,可以在每次发送AJAX请求时,向URL中添加一个随机参数,通常使用当前时间戳或者随机数。这样做可以让每个请求的URL都变得独一无二,从而绕过浏览器的缓存机制。 示例代码如下...

    IE下jquery ajax无法获得最新数据的问题解决(IE缓存)

    2. **使用POST请求**:与GET请求相比,IE浏览器通常不会对POST请求进行缓存,因为POST通常用于提交数据,被认为具有改变服务器状态的可能性。因此,将AJAX请求方法改为POST可以避免这个问题。 3. **禁用AJAX缓存**...

    ajax调用中ie缓存问题解决方法

    然而,在Internet Explorer(IE)浏览器中,如果XMLHttpRequest请求的URL与历史记录中的某个URL相同,IE会使用缓存中的数据,而不会向服务器发送新的请求。这可能导致用户看到的是旧的数据,而不是最新的服务器响应...

    IE9下Ajax无法刷新数据的缓存问题解决方法

    总之,当遇到IE9下Ajax无法刷新数据的缓存问题时,可以使用添加时间戳的方法来确保每次请求都能从服务器端获取到最新的数据。这需要根据实际的开发场景和服务器端配置,选择最合适的方法来实现。

    httpwatch-IE也可以查看AJAX请求数据的工具

    而对于响应,它会展示服务器返回的具体内容,这对于调试提交的数据和验证服务器的响应是否正确非常有帮助。 4. **时间线**:工具会提供一个时间轴,展示请求的各个阶段,如DNS解析、连接建立、发送数据、等待响应和...

    ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题

    然而,IE浏览器的缓存机制有时会导致Ajax请求的数据不更新,即当Ajax请求相同URL时,浏览器可能会从本地缓存中读取旧数据,而非向服务器发起新的请求。 IE浏览器的这种行为主要出现在GET请求中。由于GET请求的URL和...

    IE下Ajax缓存问题的快速解决方法(get方式)

    当第二次发起相同的请求时,浏览器可能直接从缓存中读取结果,而不是向服务器重新请求,这就可能导致数据无法更新。 针对这个问题,我们有两种主要的解决途径:客户端解决方案和服务端解决方案。 1. **客户端解决...

    浅析IE浏览器关于ajax的缓存机制

     如果想每次都获取到最新数据,我们只需保证每次传入的URL不一样。最简单的方法就是通过给url拼接参数。利用math函数的random()方法生成随机数。  比如访问百度www.baidu.com,我们就可以把地址写成...

    IE8用ajax访问不能每次都刷新的问题

    AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。 IE8用ajax访问不能每次都刷新的问题介绍如下: 最近发现,用ajax访问后台,用ie8访问,第一次可以正常返回值,后面就一直不会执行...

    解析jquery中的ajax缓存问题

    此方法有效地在客户端实现了数据缓存,从而避免了每次都发起服务器请求的问题,特别是在Firefox浏览器上。但是,它也引入了新的问题,即数据的同步与一致性问题。因为数据保存在客户端,所以如果服务器端的数据发生...

    ajax表单提交.docx

    在现代Web开发中,AJAX(Asynchronous JavaScript and XML)技术被广泛应用于创建交互式的网页应用,它允许页面在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。在本实例中,我们将深入探讨如何...

    IE8/IE9下Ajax缓存问题

    Ajax在IE8和IE9上使用时,可能会遇到缓存问题,这个问题是指当使用Ajax请求同一资源多次时,浏览器会直接从本地缓存中读取数据,而不是每次都从服务器获取。这样导致的问题是,如果服务器端的数据发生了变化,浏览器...

    在ajax应用当中的编码问题

    为避免缓存,开发者需要在AJAX请求中设置合适的HTTP头部,以确保每次请求都是向服务器获取最新的数据。这对于创建动态和实时的Web应用至关重要。 编码问题在AJAX应用中尤为关键,尤其是当使用POST方法提交数据时。...

    解析浏览器端的AJAX缓存机制

    需要注意的是,POST请求通常不会被缓存,因为它们通常用于提交数据,如银行转账等操作。如果AJAX请求只是获取数据且不需要服务器状态的改变,推荐使用GET方法,以利用缓存机制。 对于Internet Explorer浏览器,即使...

Global site tag (gtag.js) - Google Analytics