`

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缓存问题解决方法

    网上搜了一下,果然是缓存的问题:“IE中如果XMLHttpRequest提交的URL与历史一样则使用缓存,根本不向服务器端提交。因此无法取到刚提交的数据或新的数据”。 解决方法大致有下面几种: 1、只改进服务器端 (1)后台...

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

    总结一下解决办法: 在IE下用Ajax请求某一页面,通常会因为缓存的原因而返回上一次的结果,造成混乱,[即get方式时,获取数据,因发送参数和地址都一致,故IE浏览器会从缓存中取,而不会去请求服务器端,而post方式...

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

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

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

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

    asp+ajax静态分页

    server.asp为要连接的页面,有两个参数,其中第一个参数page为需要返回数据的页数,第二个参数n为一个随机数,这样每次发送的URL都会不一样,相当于都向服务器发出一个新的请求,避免浏览器缓存数据。 xmlhttp....

    IE8/IE9下Ajax缓存问题

    通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 步入正题: 最近在做一个网站的登录注册框,前端使用了jquery。由于sign...

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

    做一个项目用到Ajax,开始觉得挺好,后来发现一个问题,例如删除一项,恢复之后就不能再接着删除, 必须要等一段时间,后来知道是IE缓存的问题 AJAX缓存页面是一个刚接触AJAX的人一定会遇到的问题,造成这个问题的...

    IE8下Ajax缓存问题及解决办法

    通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 下面的代码,在其他浏览器都是正常的,但是在IE8中出现诡异问题。 $....

    基于 Ajax 的聊天室

    2、因为application不能太大,否则服务器必定挂掉,所以只好设置长度限制,超过n条记录后自动删除之前的消息,自动维护application的长度,听起来似乎是个好消息,但客户端也只能保存n条记录-_-,完全可以把所有...

    ie发送ajax请求返回上一次结果的解决方法

    ie下面只会建立一次 ajax 请求,将响应结果放在浏览器缓存里 下次调用该ajax请求时 从缓存里读取 get方式时,获取数据,因发送参数和地址都一致,故IE浏览器会从缓存中取,而不会去请求服务器端,而post方式因为...

    Asp+AJAX静态分页 亲测 可用

    server.asp为要连接的页面,有两个参数,其中第一个参数page为需要返回数据的页数,第二个参数n为一个随机数,这样每次发送的URL都会不一样,相当于都向服务器发出一个新的请求,避免浏览器缓存数据。 xmlhttp....

    ajax加载页面服务器返回 304 not modified

    既然你的服务器都返回 304 not modified 那说明在服务器上,你这个xml文件没有修改过,或者要加载的页面在本地没有被修改,本地缓存造成了这个问题 常用的防止被缓存的方法,就是在后面加一个随机数,或者你也可以加...

    Ext3.2的Ext.data.Store类和Ext.Ajax类的实际运用

    其中,我们可以看到Ext.Ajax可以实现动态与静态的方式提交到web服务器。从中可以看出,其实Ext框架可以非常方便的与现有网站集成。关于Ext.data.Store类,我们可以看出:该框架提供了客户端缓存的功能--这对于我们...

    jquery中ajax学习笔记4

    缓存问题: 何谓缓存问题?即当浏览器的输入内容相同,即请求的URL相同,这样浏览器就... 修改的代码: AJAXServer.java 缓存问题 代码如下: //缓存问题加的测试代码 输入内容不变IE、360次数不增加,firefox会增加 In

    jQuery资料.rar

    做一个项目用到Ajax,开始觉得挺好,后来发现一个问题,例如删除一项,恢复之后就不能再接着删除,必须要等一段时间,后来知道是IE缓存的问题 AJAX缓存页面是一个刚接触AJAX的人一定会遇到的问题,造成这个问题的...

    禁止JQuery中的load方法装载IE缓存中文件的方法

    JQuery是一个很优秀的JS框架,我们在做ajax项目开发是避免不了使用该框架来实现一些ajax的效果,其中该框架中有一个load()方法,该方法是用来在页面不刷新的情况下动态装载服务器端的文件。

    HttpWatch(破解版)

    HttpWatch又是一个IE下的强劲插件,HttpWatch最主要的功能就是对通过浏览器进行网络通讯的数据进行监控和分析,当你在浏览器的 地址栏上请求一个URL或者提交一份表单时,HttpWatch帮你分析http请求的head信息,访问...

    JavaScript中的常见问题解决方法(乱码,IE缓存,代理)

    解决AJAX中文乱码常用的两种方法 1. 在客户端进行encodeURI(utf-8也可以不做,默认),在服务器端将iso-8859-1编码转为utf-8编码 2.在客户端进行两次encodeURI,在服务器端进行一次转换。 第2种方法能解决问题的...

    ExtAspNet_v2.3.2_dll

    -修正TreeNode的属性NavigateUrl不接受服务器端URL(以~/开头)的BUG。 -增加Accordion和Tree配合使用的示例(other\accordion_tree_run.aspx)。 -修正Panel图标不能显示的BUG(CSS中class名不能有$字符)。 +去除...

    httpwatch_pro_6.1.46

    HttpWatch是强大的网页数据分析工具,可以在IE和Firefox下使用,当使用JavaScript和Ajax开发异步通信程序时,该工具就显得非常重要,它提供了详细的Cookies管理、缓存管理、消息头请求/响应、字符查询、POST数据和...

Global site tag (gtag.js) - Google Analytics