6

ウェブサイトに埋め込んだGoogleカスタム検索エンジンに検索変数を渡すことはできますか?検索エンジンを動作させることはできますが、POSTを介して用語を渡すことはできません(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>   

ありがとう

4

3 に答える 3

6

申し訳ありませんが、それはくだらない答えだと思いますが、間違った変数名を参照することを除けば、実際には正しく答えられています。ああ、また、余談ですが、誰かがあなたのフォームに次のようなものを投稿した場合に備えて、$ qで何らかのサニタイズを行っていることを願っています:term "); alert(" aha!

    customSearchControl.draw('cse');
    searchControl.execute("$q");

する必要があります:

    customSearchControl.draw('cse');
    customSearchControl.execute("$q");

また、質問ありがとうございます-私はこれを自分で行う方法を探していました!

于 2010-03-08T13:55:01.217 に答える
2

これは、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 );?>");
于 2011-04-12T20:02:27.063 に答える
2

誰かがもう少し簡単で簡単な解決策を探している場合に備えて。検索キーワードをqという名前のGETパラメーターに渡すだけです(カスタムフォームからGCSがあるページに)。GCSはその検索フレーズを自動的に使用します。

ソース:https ://developers.google.com/custom-search/json-api/v1/using_rest

于 2015-04-20T14:33:18.913 に答える