我正在使用 Google CSE v2,我需要获取用户输入的查询。问题是它是ajax,并且查询不在url中。
有谁知道解决方案?
谢谢
首先,当你创建搜索框时,你需要给它一个“gname”属性,这样你就可以在你的javascript中识别它,就像这样:
<gcse:searchbox gname="storesearch"></gcse:searchbox>
<gcse:searchresults gname="storesearch"></gcse:searchresults>
或者,如果您使用的是 html5 样式标签(除非您有理由不这样做,否则您应该这样做):
<div class="gcse-searchbox" data-gname="storesearch"></div>
<div class="gcse-searchresults" data-gname="storesearch"></div>
(将“storesearch”替换为您要用于标识此自定义搜索的任何名称。)
更多信息在这里:https ://developers.google.com/custom-search/docs/element#supported_attributes
然后,您可以访问自定义搜索元素并获取当前查询,如下所示:
var cseElement = google.search.cse.element.getElement('storesearch'),
query = cseElement.getInputQuery();
或者,如果您不再需要对元素的引用,显然可以将其合并为一行:
var query = google.search.cse.element.getElement('storesearch').getInputQuery();
该部分的文档在这里:https ://developers.google.com/custom-search/docs/element#cse-element
我知道这已经被正确回答了。但是对于那些也在寻找一个简单的 JS 函数来实现这一点的人来说,给你。将要从查询字符串中提取的变量的名称传递给它。
var qs = (function(a) {
if (a == "") return {};
var b = {};
for (var i = 0; i < a.length; ++i) {
var p=a[i].split('=');
if (p.length != 2) continue;
b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "));
}
return b;
})(window.location.search.substr(1).split('&'));