我有一个搜索脚本,如谷歌即时搜索,显示您键入的相关结果。它是用JSON编写的,并在用户输入时使用JavaScript生成结果的URL。但是,如果您单击某个结果,然后返回到SERP,则不会显示任何结果。你必须重新开始搜索。为什么会这样呢?我希望你能理解我试图描述的内容。
下面是我的HTML代码:
<input type="text" id="search" name="q">
<div id="result"></div>
下面是我的JSON代码:
$(document).ready(function(){
$("#search").keyup(function(){
var search=$(this).val();
var keyword=encodeURIComponent(search);
var yt_url='http://api.search.live.net/json.aspx?JsonType=callback&JsonCallback=?&Appid=642636B8B26344A69F5FA5C22A629A163752DC6B&query='+keyword+'&sources=web';
$.ajax({
type:"GET",
url:yt_url,
dataType:"jsonp",
success:function(response){
$("#result").html('');
if(response.SearchResponse.Web.Results.length){
$.each(response.SearchResponse.Web.Results, function(i,data){
var title=data.Title;
var dis=data.Description;
var url=data.Url;
var final="<div class='webresult'><div class='title'><a href='"+url+"'>"+title+"</a></div><div class='desc'>"+dis+"</div><div class='url'>"+url+"</div></div>";
$("#result").append(final);
});
}
}
});
});
});
发布于 2011-06-03 12:32:34
如果我没理解错的话,你是在做一个完整的页面加载来得到一个结果,当你返回的时候,你又做了一个完整的页面加载。
基本上,如果你想持久化页面加载的搜索结果,你必须将搜索查询存储在会话作用域或cookie中,当会话/cookie出现时,javascript代码将不得不发出搜索,就好像它是在搜索域中输入的一样。
因此,当你点击一个结果,然后返回,javascript就会智能地知道这是一个以前搜索过的返回用户。并将相同的结果填充到DOM中。
DOM更改不会在页面加载上持久化。
https://stackoverflow.com/questions/6227006
复制