我有一个像Google Instant Search这样的搜索脚本,可以在您输入时显示相关结果。它是用JSON编写的,当用户键入搜索时当前不会形成URL,而是保持不变。我怎样才能使每个搜索都有一个URL?我希望你能理解我想要描述的内容。
这是我的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);
});
}
}
});
});
});
答案 0 :(得分:2)
您可以使用javascript location.hash
存储查询字符串并使URL唯一。请记住location.hash中的任何更改都会记录在浏览器历史记录中,这会产生影响。
当用户提交按钮时,在location-hash中添加search关键字,如
$("#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';
window.location.hash = keyword;
所以现在每个网址都有一个带有search-keyword的唯一网址,因为它是哈希值,比如
等
答案 1 :(得分:0)
你可能想要考虑hash-bang技术。有几个jQuery插件可以满足您的需求。
http://benalman.com/projects/jquery-bbq-plugin/
http://www.google.co.za/search?q=jquery+hashbang