我正在使用Google CSE v2,我需要获取用户输入的查询。问题是它是ajax,而查询不在url中。
有人知道解决方案吗?
由于
答案 0 :(得分:2)
首先,当你创建搜索框时,你需要给它一个'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
答案 1 :(得分:0)
我知道这已经正确回答了。但对于那些也在寻找简单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('&'));