Google自定义搜索热门查询的错误

时间:2015-07-07 15:00:41

标签: javascript json google-custom-search

我在网站上有自定义搜索,我想使用自定义搜索热门查询选项显示最热门的搜索。首先,Google在此过程中提供的代码是错误的 - 我一直收到不好的请求。 This SO post帮助我重建了正确的网址,但现在我收到了语法错误。

当我运行测试时,我从控制台中获取了来自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错误。这可能是查询渲染器脚本的问题吗?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果您查看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>

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

  

SyntaxError:意外的令牌&#39;:&#39;。解析错误。

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

似乎是单引号是问题,而不是它们未编码用于URL。如果我用%27(编码单引号)替换%22,则会产生相同的“意外令牌”错误。

如果您希望避免使用百分比编码,则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规范,双引号在单引号内是合法的,我已经确认这也适用于我的搜索页。