Javascript 重新加载页面后加载动态生成的内容
我有一个用jQuery编写的Google即时风格的搜索脚本。当用户搜索时,会创建一个类似于#search/QUERY/1/的URL。但是,当您重新加载页面、单击转到其他页面的结果或从上一页面返回时,搜索结果不再存在。为什么会这样 我的jQuery代码是:Javascript 重新加载页面后加载动态生成的内容,javascript,jquery,html,Javascript,Jquery,Html,我有一个用jQuery编写的Google即时风格的搜索脚本。当用户搜索时,会创建一个类似于#search/QUERY/1/的URL。但是,当您重新加载页面、单击转到其他页面的结果或从上一页面返回时,搜索结果不再存在。为什么会这样 我的jQuery代码是: $(document).ready(function(){ $("#search").keyup(function(){ var search=$(this).val(); var query=encod
$(document).ready(function(){
$("#search").keyup(function(){
var search=$(this).val();
var query=encodeURIComponent(search);
var yt_url='search.php?q='+query+'&category=web';
window.location.hash='search/'+query+'/1/';
document.title=$(this).val()+" - My Search Script";
if(search==''){
window.location.hash='';
document.title='My Search Script';
}
$.ajax({
type:"GET",
url:yt_url,
dataType:"html",
success:function(response){
if(response !=""){
$("#result").html(response);
} else {
$("#result").html("No results were found.");
}
}
});
});
});
因为它会返回到搜索前的页面状态 也许这是一个解决办法:
$(document).ready(function(){
/*
your code here
*/
if ($("#search").val() != "")
$("#search").keyup();
});
因此,它将模拟用户在重新加载页面、返回页面等情况下进行搜索的行为。无法重新加载页面。由于从未发布过任何内容,我认为您必须使用cookie或其他工具来保存上次搜索的值,以使其在重新加载时工作。如果您重新加载页面,表单将不会被清除,除非它具有“自动完成=关闭”属性,因此我认为它应该工作,因为无论如何都会触发键控。请转到大多数任何页面(例如google.com),在搜索栏中键入内容,然后单击“重新加载”。浏览器的工作方式并不能将键入的任何内容保存到尚未提交的表单中。@jamietre-Firefox倾向于在刷新后保留输入值,但这绝对不是一种可以依赖的功能!在firefox中不适合我!我只是从OP提出的实际问题的背景下说的。就个人而言,我认为您不希望在重新加载时保存以表单形式输入的数据,因为浏览器应该是这样工作的。如果您想保护表单输入,您应该处理
窗口。卸载并询问他们。
$(document).ready(function(){
/// Your original key up here...
// With browser's back you should get your hash back, so you should be
// able to fill in the query value back and simulate key release to trigger search
if(window.location.hash.indexOf('#search/') == 0) {
query = window.location.hash.replace('#search/', '').replace('/1/', '');
$('#search').val(decodeURIComponent(query)).keyup();
}
});