【问题标题】:Fixing a URL to the SERP of a instant JSON search script修复即时 JSON 搜索脚本的 SERP 的 URL
【发布时间】:2011-06-03 12:19:21
【问题描述】:

我有一个搜索脚本,例如 Google Instant search,它会在您键入时显示相关结果。它是用 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);
                    });
                }
            }
        });
    });
});

【问题讨论】:

    标签: javascript jquery html json


    【解决方案1】:

    如果我对您的理解正确,您正在加载整页以获取结果,当您返回时,您会再次加载整页。

    基本上,如果您想在页面加载时保留搜索结果,您必须将搜索查询存储在会话范围内或作为 cookie,并且当会话/cookie 存在时,javascript 代码将不得不发出搜索,就好像它是在搜索字段中输入。

    所以当你点击一个结果,然后你返回时,javascript 足够聪明地知道这是一个以前进行过搜索的返回用户。并将相同的结果填充到 DOM 中。

    DOM 更改不会在页面加载后持久化。

    【讨论】:

    • 有很多选择。将搜索查询存储到会话范围(实现取决于您的应用程序服务器),将其存储为带有 jQ​​uery.cookie 框架的 cookie(设置它们的生存时间限制......比如说 1 小时),或者您可以将请求参数传回并第四,但我不建议这样做,因为这种逻辑可能很容易中断,并且可能不适用于后退按钮。
    • 我不确定谷歌做了什么,但在我看来他们以某种方式将状态保留为请求参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    相关资源
    最近更新 更多