Google 自定义搜索热门查询出错

Errors with Google Custom Search popular queries

我在网站上进行了自定义搜索,我想使用“自定义搜索热门查询”选项显示最热门的搜索。首先,过程中给出的代码 Google 是错误的——我一直收到错误的请求。 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 错误。可能是查询呈现器脚本有问题吗?

感谢任何帮助。

如果您查看 Google 上的示例(您应该能够在 Google 自定义 Search/Statistics 和日志 页),你应该看到 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: Unexpected token ':'. Parse error.

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

问题似乎出在单引号上,而不是它们没有针对在 URL 中使用进行编码。如果我将 %22 替换为 %27(编码的单引号),则会产生相同的“意外标记”错误。

如果您出于某种原因希望避免使用百分号编码,则可以 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 规范,双引号在单引号内是合法的,我已经验证这在我的搜索页面上也有效。