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 规范,双引号在单引号内是合法的,我已经验证这在我的搜索页面上也有效。
我在网站上进行了自定义搜索,我想使用“自定义搜索热门查询”选项显示最热门的搜索。首先,过程中给出的代码 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 规范,双引号在单引号内是合法的,我已经验证这在我的搜索页面上也有效。