【问题标题】:JSP Custom tag Ajax inconsistencyJSP自定义标签Ajax不一致
【发布时间】:2013-08-21 20:21:21
【问题描述】:

我有一个要加载的 jsp 和自定义标签,这基本上是我的 html 代码的一部分。触发页面调用自定义标记的事件是使用 ajax 重新加载按钮的 onclick。我遇到的问题是,当它到达自定义标签以基本上刷新我的页面的一部分(页面上有复选框,一个被选中)时,它并没有完全刷新页面的那一部分,因为我有复选框将在页面上取消选中。这是我遇到的一个 ajax 问题。有谁知道为什么会这样???我有其他事件,例如下拉框并加载相同的自定义标签,它会刷新页面以包括复选框的刷新。以前有人遇到过这种情况吗?

【问题讨论】:

  • 你有什么问题?

标签: javascript html ajax jsp tags


【解决方案1】:

您可能遇到了缓存问题。您需要将无缓存标头放在其中包含标记的 JSP 页面的顶部。这可能无法完全解决问题(因为在 Internet Explorer 中可能仍会做一些古怪的事情)。

 response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
 response.setHeader("Pragma","no-cache"); //HTTP 1.0
 response.setDateHeader ("Expires", 0);

尽管如此,为了防止 Ajax 进行自己的缓存,您可能还想使用 POST 而不是 GET。

编辑:您还可以尝试在请求中添加一个额外的参数并将其设置为时间戳,这样每个请求都将被视为唯一的。

【讨论】:

  • 所以,这听起来像是问题所在,但尝试无济于事。
  • 我必须使用 IE,这很奇怪,因为我将 Ajax.Updater() 用于多个事件,但在这种情况下它不会刷新 Ajax。我一定是错过了什么!
  • 在 IE 中,如果您将页面设置为“自动”而不是“每次访问页面”,我已经看到它忽略了 AJAX 的缓存标头。您应该尝试在请求中添加时间戳参数。
  • 致 Ajax.Updater()... 抱歉,我对 javaScript 还是很陌生。我将如何添加时间戳?
  • 无论您如何设置要发送的字段或请求参数,只需添加一个并将其设置为 (new Date().getTime())。您不必在 JSP 中阅读它。它只是为了欺骗 IE 将请求视为唯一的。
猜你喜欢
  • 2013-01-29
  • 2014-05-11
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多