【问题标题】:Errors with Google Custom Search popular queriesGoogle 自定义搜索热门查询的错误
【发布时间】:2015-07-07 15:00:41
【问题描述】:

我有一个网站上的自定义搜索,我想使用自定义搜索热门查询选项显示最热门的搜索。首先,谷歌在这个过程中给出的代码是错误的——我不断收到错误的请求。 This SO post 帮助我重建了正确的 URL,但现在我遇到了语法错误。

当我运行测试时,我在控制台中从返回的 JSON 信息中得到 Uncaught SyntaxError: Unexpected token :

这是我的 HTML:

<div id="queries"></div>
        <script src="https://cse.google.com/query_renderer.js"></script>
        <script src="https://www.google.com/cse/api/USERID/cse/CSEID/queries/js?view=overall&callback=(new+PopularQueryRenderer(document.getElementById('queries'))).render"></script>

引发错误的冒号在title 之后,但我不知道为什么会发生这种情况。

{
"title" : "MTBoS Search Engine",
"popularQueries" : [ ...rest of the results array... ]
}

最后,我尝试通过复制和粘贴调用 URL 来从 formatting checker 调用 JSON 响应,但它返回了一些 HTML 错误。会不会是查询渲染器脚本的问题?

感谢任何帮助。

【问题讨论】:

    标签: javascript json google-custom-search


    【解决方案1】:

    如果您查看 Google 上的示例(您应该能够在 Google 自定义搜索/统计和日志页面的底部看到它),您应该看到它而不是单引号, Google 的示例使用编码的双引号:

    <script src="https://www.google.com/cse/api/USERID/cse/CSEID/queries/js?view=overall&callback=(new+PopularQueryRenderer(document.getElementById(%22queries%22))).render"></script>
    

    我不明白为什么单引号在那里不起作用,但是,我已经证实至少对我来说它们不起作用。如果我把单引号放在那里,我会得到你看到的错误:

    语法错误:意外的标记“:”。解析错误。

    如果我将百分比编码的引号放在那里,它会成功创建热门查询列表。

    问题似乎是单引号,而不是它们没有被编码用于 URL。如果我将 %22 替换为 %27(编码的单引号),则会产生相同的“Unexpected token”错误。

    如果您出于某种原因希望避免使用百分比编码,则使用legal to use single quotes 来包围属性,因此您可以这样做:

    <script src='https://www.google.com/cse/api/USERID/cse/CSEID/queries/js?view=overall&callback=(new+PopularQueryRenderer(document.getElementById("queries"))).render'></script>
    

    根据 HTML 规范,单引号内的双引号是合法的,我已经验证这也适用于我的搜索页面。

    【讨论】:

    • 我不知道我做错了什么,因为我认为我已经尝试了所有可以尝试的单引号和双引号组合。现在工作。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    相关资源
    最近更新 更多