将URL添加到即时JSON搜索脚本

时间:2011-06-03 06:42:16

标签: jquery html json

我有一个像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);
                    });
                }
            }
        });
    });
});

2 个答案:

答案 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的唯一网址,因为它是哈希值,比如

  

http://www.example.com/search#q=usefull

     

http://www.example.com/search#q=another+keyword

答案 1 :(得分:0)

你可能想要考虑hash-bang技术。有几个jQuery插件可以满足您的需求。

http://benalman.com/projects/jquery-bbq-plugin/
http://www.google.co.za/search?q=jquery+hashbang