gpt4 book ai didi

jquery - Chrome 中的 JSON 中断按钮,IE 中的重新加载按钮(显示为裸数据)

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:33 24 4
gpt4 key购买 nike

在任何事情之前:$.getJSON back button showing JSON return data not the page没有帮助,以及https://groups.google.com/group/angular/browse_thread/thread/3787ad609c0beb77/eb1b57069dab9f63没有,互联网也没有帮助。

问题是:

我从页面内调用 url 以获取 json 数据,然后在同一页面内使用 jquery 模板呈现这些数据。

假设我们在页面 http://someurl.com/search 上我们正在开始这样的请求

$.ajax({
url: '/searchthis', //important, this is NOT THE SAME URL
cache: false,
type: 'GET',
headers: {
"Accept": "application/json",
},
dataType: 'json'
success: function(data) {
doSomethingWithResults(data);
}
});

Rack 响应将缓存控制 header 设置为无缓存:

Cache-Control:no-cache

一切正常,但如果您在 Chrome 中离开该页面转到另一个页面,然后按后退按钮,您将看到裸露的 JSON 数据。当您在 IE8 中点击重新加载按钮时,也会出现相同的行为。如果您只需在地址栏中的 url 上按 Enter,两者都可以正常工作。

我不知道如何解决这个问题,因为 Chrome 开发人员不会这样做(请参阅 http://code.google.com/p/chromium/issues/detail?id=108425)

在我看来这像是浏览器方面的误解,因为它缓存了一些它不应该缓存的东西(响应头)并且它在错误的 url 下缓存了一些东西(因为 JSON 请求没有命中相同的 URL)

最佳答案

问题实际上是 Rails:Chrome 和 IE 都请求没有特定格式的最后一个响应,所以 Rails 只接受第一个响应 block ,在我的例子中恰好是 json。将 html block 放在 json block 前面解决了这个问题。

respond_to do |format|
format.html { ... } //important because the request comes with no specific format
format.json { ... }
end

关于jquery - Chrome 中的 JSON 中断按钮,IE 中的重新加载按钮(显示为裸数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10715852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com