Javascript 如何处理浏览器';背面'&';刷新';在页面上使用AJAX内容(以便内容与加载它的表单匹配)

Javascript 如何处理浏览器';背面'&';刷新';在页面上使用AJAX内容(以便内容与加载它的表单匹配),javascript,jquery,Javascript,Jquery,我在寻找这个问题的答案时遇到了困难,我想是因为关键词太笼统了,而且与其他事物相关 我有一个带有记录搜索表单(AJAX)的索引页面,用于将记录加载到页面上的主div中。当页面第一次加载时,表单被设置为特定状态,这取决于用户和div的内容是基于相同的条件加载的。提交表单时,将通过AJAX替换主div的内容 如果用户单击浏览器刷新按钮,或转到另一个页面并单击浏览器后退按钮,索引页面将显示与用户单击后退或刷新时相同的状态,但div内容是原始默认内容。这使得列出的项目看起来像是表单当前状态的结果 是否有方

我在寻找这个问题的答案时遇到了困难,我想是因为关键词太笼统了,而且与其他事物相关

我有一个带有记录搜索表单(AJAX)的索引页面,用于将记录加载到页面上的主div中。当页面第一次加载时,表单被设置为特定状态,这取决于用户和div的内容是基于相同的条件加载的。提交表单时,将通过AJAX替换主div的内容

如果用户单击浏览器刷新按钮,或转到另一个页面并单击浏览器后退按钮,索引页面将显示与用户单击后退或刷新时相同的状态,但div内容是原始默认内容。这使得列出的项目看起来像是表单当前状态的结果

是否有方法检测页面是否已通过后退或刷新浏览器操作显示,以便我可以触发表单提交并根据搜索表单的当前状态更新内容($(“#搜索表单_提交按钮”)。单击()?或者,应该怎么做


谢谢-非常感谢

查看插件。

如果表单有默认值,如“”或“搜索此处…”,您可以检查默认值是否已更改,然后提交表单:

// If the input value is different from the know default
if($("#search_form_input").val() != "Search here..") {

  // Update the results on the page
  $('#search_form_submit_button').click();

}
并在pageready上调用它-因此在
$(function(){/*content here*/})中

另外,看看History.js-

它提供了一个真正完整的历史管理系统。它支持jQuery和其他几个库

编辑:
我将谈谈雷诺在评论中提到的一些事情

您可以使用这个小库在页面更改期间保存数据。从该链接下载js文件,并将其包含在文档的
中:

<script type="text/javascript" src="sessionvars.js"></script>
然后在加载页面时,检查sessvars.myObj.search中是否有值。如果有,则搜索该值:

if(sesvars && sessvars.myObj && sessvars.myObj.searched) {
  $("#Search_form_input").val(sessvars.myObj.searched);
  $('#search_form_submit_button').click();
}

实际上我没有一个已知的默认值,因为它可以随着用户使用表单而改变。实际上,我不知道在浏览器刷新或返回时执行文档就绪脚本按照您的逻辑,我可以将“formhasnotchange”粘贴到一个隐藏的div中,并用“formhasnchange”替换内容(如果进行了ajax调用),然后让页面就绪脚本检查该div的值,以了解是否提交表单。我会尝试一下,如果你的答案有效的话,我会接受你的答案-谢谢!在DOM中由javascript更改的内容不会在页面刷新或后退按钮使用期间保持不变。您可以这样看:使用javascript在页面上持久化数据。因此,在包含该链接中的JS文件后,您可以在进行搜索时编写
sessvars.myObj={searched:“search_value”}
,然后加载检查sessvars.myObj.searched
是否存在以及是否存在,开始搜索..是的,我太傻了-当刷新/返回返回到原始页面状态时,除了通过参数传递的表单状态外,不能将页面更改为标记。感谢所有的帮助。我不需要使用会话变量插件,因为我已经在Rails中使用了会话变量。我刚刚创建了一个名为“index_ajax”的新索引,它根据初始页面加载或ajax更新更改为“none”或“changed”。然后我将Rails会话变量的状态注入Javascript语句。当您使用另一种语言动态编写脚本的一部分时,它总是很有趣的。:)如果('
if(sesvars && sessvars.myObj && sessvars.myObj.searched) {
  $("#Search_form_input").val(sessvars.myObj.searched);
  $('#search_form_submit_button').click();
}