2013-05-31 3 views
6

私はGCSをウェブサイトに追加する任務を受けています。私は無料のGCS(http://www.google.com/cse/sitesearch/create)を作成するための指示に従って、提供されたスニペットを適切な場所に貼り付けた後、検索ボックス&ボタンコンポーネントが表示され、検索文字列を入力して検索結果を表示できます。ここまでは順調ですね。Googleカスタム検索(V2)をプリロードされた検索文字列ですぐに実行するにはどうすればいいですか?

しかし、初めてコンポーネントがレンダリングされるときに、事前に入力された文字列をボックスに渡して、プログラマチックに検索を即座に実行できるようにしたいと考えています。このビットは機能しません。

供給スニペットプラスカスタム検索要素コントロールAPIドキュメント(https://developers.google.com/custom-search/docs/element)の私の読書から得られるいくつかの余分なコードからなる、次のと「即時実行」を実装することを目的として、私は現在の場所に持っているコードは次のとおりです。

<div class="content-container"> 
    <script type="text/javascript"> 
     (function() { 
      var cx = '(my search id)'; 
      var gcse = document.createElement('script'); 
      gcse.type = 'text/javascript'; 
      gcse.async = true; 
      gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + 
       '//www.google.com/cse/cse.js?cx=' + cx; 
      var s = document.getElementsByTagName('script')[0]; 
      s.parentNode.insertBefore(gcse, s); 
     })(); 
    </script> 
    <gcse:search> gname="2DSearch"</gcse:search> 
    <script type="text/javascript"> 
     var element = google.search.cse.element.getElement("2DSearch"); 
     element.prefillQuery(primarySearch); 
     element.execute(primarySearch); 
    </script> 
</div> 

primarySearchは、自動的に検索したい文字列です。コンポーネントがレンダリングされると、文字列 'gname = "2DSearch"が一時的に表示され、検索コンポーネントが表示される直前に再び表示され、その後は何も起こりません。私は、関連する他の何かのために数時間無駄にウェブを検索しましたhttps://stackoverflow.com/questions/15871911/passing-optional-search-parameters-into-google-custom-search-query

は(未回答)この質問とここにいくつかの類似点があるように思われます。

なぜ誰かがそれが動作していない、および/または私がする必要があることを教えてもらえますか?

私は申し訳ありませんが、私はprogrammmingの多くを行っているが、それはHTML & javascriptについては実質的に文盲である。 キャッチされていないにReferenceError: おかげ ジム

私はクロームコンソールは、次のエラーが表示されていることを発見し、再びコンソールで

<div class="content-container"> 
    <script type="text/javascript"> 
     (function() { 
      var cx = '013736134253840884188:fxsx6zqql_y'; 
      var gcse = document.createElement('script'); 
      gcse.type = 'text/javascript'; 
      gcse.async = true; 
      gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + 
       '//www.google.com/cse/cse.js?cx=' + cx; 
      var s = document.getElementsByTagName('script')[0]; 
      s.parentNode.insertBefore(gcse, s); 
     })(); 
    </script> 
</div> 

<div class="gcse-search" data-gname="2DSearch"></div> 

<div class="content-container"> 
    <script type="text/javascript" src="https://www.google.com/jsapi"></script> 
    <script type="text/javascript"> 
     var element = google.search.cse.element.getElement("2DSearch"); 
     element.prefillQuery(primarySearch); 
     element.execute(primarySearch); 
    </script> 
</div> 

:グーグルは

私のコードは次のようになりますが定義されていません。私は今も以下を見ています:

XMLHttpRequestが読み込めません(上記のjsapiリンクを挿入することはできません)。 Origin(私のlocalhostのURLをここに挿入する)は、Access-Control-Allow-Originによって許可されていません。

JSON、JQUERY、AJAXなどを参照して提案されているソリューションでは、ネット全体にわたって同様のエラーが多数発生していますが、私が見つけたものは何も直接関連していません私のコードに「google」が定義されているファイルやライブラリを利用できるようにしようとしています。私が試したことは何もできませんでした。ろうそくと炭鉱を通してあなたの方法を見つけようとしておよそ

の話... :) 乾杯

答えて

12

私はそれがGCSEのコールバックオプションでの作業持っている(私はまた、CSEのコントロールパネルで、私のレイアウトを変更しましたデフォルトのオーバーレイを防止します)。

<script> 
function gcseCallback() { 
    if (document.readyState != 'complete') 
    return google.setOnLoadCallback(gcseCallback, true); 
    google.search.cse.element.render({gname:'gsearch', div:'results', tag:'searchresults-only', attributes:{linkTarget:''}}); 
    var element = google.search.cse.element.getElement('gsearch'); 
    element.execute('this is my query'); 
}; 
window.__gcse = { 
    parsetags: 'explicit', 
    callback: gcseCallback 
}; 
(function() { 
    var cx = 'YOUR_ENGINE_ID'; 
    var gcse = document.createElement('script'); 
    gcse.type = 'text/javascript'; 
    gcse.async = true; 
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + 
    '//www.google.com/cse/cse.js?cx=' + cx; 
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(gcse, s); 
})(); 
</script> 

<div id="results"></div> 
+0

これは動作しますが、検索ボックスは表示されません。検索結果のみが表示されます。 – shorif2000

+0

'searchresults-only'を 'search'に変更してみてください –

1

URLから検索語句を渡すことはできますか?

<script> 
    (function() { 
    var cx = 'YOURID'; 
    var gcse = document.createElement('script'); 
    gcse.type = 'text/javascript'; 
    gcse.async = true; 
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + 
     '//www.google.com/cse/cse.js?cx=' + cx; 
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(gcse, s); 
    })(); 
</script> 

<gcse:searchbox queryParameterName="term"></gcse:searchbox> 
<gcse:searchresults></gcse:searchresults> 

「検索」ページをyourdomain.com/search?term=searchwordとすると、すぐに検索結果が表示されます。

関連する問題