3

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

有谁知道解决方案?

谢谢

4

2 回答 2

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

于 2013-02-17T21:46:04.057 回答
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('&'));
于 2014-07-29T19:31:08.963 回答