【发布时间】:2014-01-07 04:26:36
【问题描述】:
我正在使用 jQuery 的 $.ajax() 方法来发出基于 XHR 的 HTTP GET 以从 Ruby on Rails 站点检索部分 HTML。在这种特殊情况下,每当用户单击选项卡式导航时,我都会使用从服务器返回的数据更新 HTML 表。问题是,一旦数据在服务器上可用,它就永远不会改变。当用户从一个选项卡单击到下一个选项卡时,它不必要地向服务器发出更多 XHR 请求以获取它应该已经拥有和/或缓存的数据。我尝试使用cache: true 属性,但我认为它不像我想象的那样有效。这是我的脚本示例:
$.ajax({
url: "/nba/value_charts/" + site_id + "/" + t_date,
cache: true
})
.done(function( html ) {
$("#vr").html(html)
$(".value-charts").tablesorter();
});
我可以做些什么,以便在重新单击选项卡时,它至少在用户刷新页面之前使用先前获取的 HTML 来覆盖它?如果缓存不存在,它应该只发出 XHR 请求。这是当前内置于 jQuery 还是我必须自己编写逻辑才能使其工作?
【问题讨论】:
-
using cache: true 不会阻止请求的发生,它只是允许浏览器缓存响应。如果您想阻止它再次发送请求,则必须手动执行此操作。
标签: javascript jquery ruby-on-rails ajax caching