変数をGoogleカスタム検索エンジンに渡します
-
21-09-2019 - |
質問
私のウェブサイトに埋め込まれたGoogleカスタム検索エンジンに検索変数を渡すことは可能ですか?検索エンジンを動作させることはできますが、投稿を介して用語を渡すことはできません(Webサイトの他のページの検索ボタンから来ています)
ここで見つけたコードをハッキングしようとしました: http://code.google.com/apis/ajax/playground/?exp=search#hello_world
そして、これは私がこれまでに持っているものです...($ qは私がそれに渡す用語です)
<script type="text/javascript">
google.load('search', '1', {language : 'en'});
function OnLoad()
{
var customSearchControl = new google.search.CustomSearchControl('***my key****');
customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
customSearchControl.draw('cse');
searchControl.execute("$q");
}
google.setOnLoadCallback(OnLoad);
</script>
ありがとう
解決
申し訳ありませんが、私はそれがくだらない答えであることを知っていますが、あなたは実際に間違った変数名を参照することとは別にそれを手に入れました。ああ、脇にも、誰かがあなたのフォームにこのようなものを投稿した場合に備えて、あなたが$ Qである種の消毒をしていることを願っています:ターム "); alert(" aha!
customSearchControl.draw('cse');
searchControl.execute("$q");
あるべきです:
customSearchControl.draw('cse');
customSearchControl.execute("$q");
また、質問してくれてありがとう - 私はこれを自分で行う方法を探していました!
他のヒント
これは、この同じ目標を達成しようとするPHPを使用している人を支援するためです。上記の例は使用しています...
customSearchControl.execute("$q");
渡されているパラメーターを読むには、PHPサイトで使用します...
customSearchControl.execute("<?php echo $_POST['your_paramter_name_here'];?>");
パラメーターが投稿にない場合は、$ _getまたは$ _requestを使用できます。
もちろん、最初に入力を消毒する必要があります。このようなものはかなり弱いですが、それは始まりです...
customSearchControl.execute("<?php echo htmlentities( trim( $_POST['your_paramter_name_here'] ), ENT_QUOTES );?>");
誰かがもう少し単純な /シンプルな解決策を探している場合。あなたがしなければならないのは、検索キーワードをgetパラメーターの名前に渡すことです Q (カスタムフォームからGCSがあるページに)、GCSはその検索フレーズを自動的に使用します。
ソース: https://developers.google.com/custom-search/json-api/v1/using_rest