在Google CSE v2中获取查询字符串

时间:2012-11-13 19:48:34

标签: ajax google-custom-search

我正在使用Google CSE v2,我需要获取用户输入的查询。问题是它是ajax,而查询不在url中。

有人知道解决方案吗?

由于

2 个答案:

答案 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('&'));