1

我有一个 ASP.Net 应用程序,它使用 jQuery 的 AJAX POST 方法来更新 DOM。

  1. 用户输入日期
  2. 用户单击链接按钮
  3. 对数据库的 JQuery ajax post 调用会加载带有请求数据的 div。

一切正常,除非用户在 IE 中手动刷新页面。
如果他们做出更改然后点击浏览器刷新按钮,然后再次执行这三个步骤,即使数据库已正确更新,它也不会显示他们刚刚输入的更新数据。

它显示原始数据

他们必须完全关闭浏览器并重新打开它才能看到更改。

这只发生在 IE 中。
FF 和 Chrome 会在刷新时显示更改。

我在这里想念什么?

4

2 回答 2

5

Internet Explorer 将 AJAX 请求缓存到 URL,并在您对同一 URL 进行另一个 AJAX 调用时简单地返回缓存的响应。值得庆幸的是,cache在 jQuery AJAX 调用上设置选项false将导致时间戳被附加到 URL,绕过缓存。

要为所有 jQuery AJAX 请求设置该选项,您可以使用如下$.ajaxSetup()函数:

$.ajaxSetup({cache : false});

将它放在 .js 文件的顶部,以便在任何 AJAX 请求之前执行它。

于 2012-08-14T11:00:01.410 回答
0

我不明白你真正想要什么,但你是这样的:

  1. 创建隐藏的输入,它的值指示页面是第一次加载还是回发。
  2. 从 Page_loaded() 事件内部的代码中检查页面是否是第一次加载,并在隐藏的输入中存储一个 bool 值以表明这一点。
  3. 在 $(document).ready() 函数内部检查隐藏的输入值,并基于此您可以决定是否进行 Jquery ajax 调用。
于 2012-08-14T11:00:31.637 回答