Google CSE v2 を使用しており、ユーザーが入力したクエリを取得する必要があります。問題は、それが ajax であり、クエリが URL に含まれていないことです。
誰かが解決策を知っていますか?
ありがとう
Google CSE v2 を使用しており、ユーザーが入力したクエリを取得する必要があります。問題は、それが ajax であり、クエリが URL に含まれていないことです。
誰かが解決策を知っていますか?
ありがとう
まず、検索ボックスを作成するときに、次のように、JavaScript で識別できるように「gname」属性を指定する必要があります。
<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();
または、要素への参照がもう必要ない場合は、明らかにそれを 1 行にまとめることができます。
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('&'));