gpt4 book ai didi

jquery - 响应 jquery 请求时出现 304 错误

转载 作者:行者123 更新时间:2023-12-01 01:22:51 24 4
gpt4 key购买 nike

场景:

  1. 用户访问页面

  2. Jquery开始向后端代码发出ajax请求

  3. 导航到页面(不刷新)我可以看到请求仍然从客户端发送到服务器。现在应该停止了。

  4. 当用户再次返回同一页面时,请求应该开始命中,但它抛出 304 错误。 Jquery 应该再次发出请求。

用户点击以下按钮代码

index.html.erb

<td colspan="3"><%= link_to 'Show state', simulation, :class => 'btn btn-primary' %></td>

将导航至

show.html.erb

这里我编写了jquery代码来发出Ajax请求

<script>
$(function() {setInterval(function(){ $.get("/posts/<%= @post.id %>"); }, 5000);
});
Dom needed to be changes after every `Ajax` response in same views (show.html.erb)

<span id="post-data">
<table class = 'table table-hover'>
.....
</table>
</span>

用于渲染 View 的js文件

在 show.js.erb 中

$("#post-data").html(" <table> ... </table>") 

如何修复这些错误。任何帮助都是值得赞赏的,我不是一个核心 javascript 人员。

我在寻找什么?

  • 当用户导航到其他页面(通过单击后退按钮)时停止 jquery 事件的方法
  • 一种即使在用户返回页面时也启动 jquery 的方法。

最佳答案

第二次运行时,会返回浏览器缓存的内容, 按照规范应有的样子:

For 304 Not Modified responses that are a result of a user agent generated conditional request the user agent must act as if the server gave a 200 OK response with the appropriate content.

jQuery 在这里不生成任何响应。 304 header 只是一个 HTTP header 。 HTTP AJAX 请求是普通的 HTTP 请求,可以返回任何有效的 header 。如果服务器响应 304,XHR 对象将简单地提供来自服务器的本地缓存响应。不过,它对用户来说是完全透明的。

您可以在ajax请求中使用缓存参数,这样它就可以工作:

   $.ajax({
url: ".....",
dataType: "json",
type: "GET",
cache: false,
contentType: "application/json",
success: function (data, textStatus) {
console.log("RECV: " + data);
}
});

关于jquery - 响应 jquery 请求时出现 304 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31196989/

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