2013-05-31 8 views
6

Ich habe mit dem Hinzufügen von GCS zu einer Webseite beauftragt. Nachdem ich die Anweisungen befolgt meine freie GCS (http://www.google.com/cse/sitesearch/create) zu erstellen, und klebte den mitgelieferten Code-Schnipsel in die entsprechende Stelle, die Box Suche & Schaltfläche Komponenten machen OK und der Benutzer in der Lage, einen Suchbegriff einzugeben, die Suche und die Ergebnisse zu sehen . So weit, ist es gut.Wie die Google Custom Search (V2) zur Ausführung sofort mit einem vorbelasteten Suchbegriff bekommen?

Wenn jedoch die Komponenten zum ersten Mal machen mag ich in der Lage sein, eine vorge eingegebene Zeichenkette in das Feld zu übergeben und haben programmatisch die sofort ausgeführt Suche. Dieses Bit funktioniert nicht.

Der Code, den ich zur Zeit an der richtigen Stelle ist wie folgt, die aus dem mitgelieferten Schnipsel sowie einige zusätzliche Code abgeleitet aus meiner Lektüre des Custom Search Element Control API doc (https://developers.google.com/custom-search/docs/element) und bestimmt die ‚ausführen sofort‘ umzusetzen:

<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 ist die Zeichenfolge, die ich automatisch suchen möchte. Wenn die Komponenten gerendert werden, erscheint die Zeichenfolge 'gname = "2DSearch"' kurz und verschwindet dann wieder, kurz bevor die Suchkomponenten angezeigt werden, dann passiert nichts anderes mehr.

Es scheint einige Ähnlichkeiten hier mit dieser Frage (offen) zu sein: https://stackoverflow.com/questions/15871911/passing-optional-search-parameters-into-google-custom-search-query

ich die Web vergeblich für eine Anzahl von Stunden für etwas anderes relevant gesucht.

Kann mir jemand sagen, warum es nicht funktioniert und/oder, was ich tun muss?

Entschuldigung, ich habe viel Programmieren gemacht, bin aber praktisch Analphabet, wenn es um HTML & Javascript geht. Dank Jim

entdeckte ich, dass die Chrome-Konsole den folgenden Fehler zeigt: Uncaught Reference: Google ist nicht

definiert

jetzt Mein Code sieht wie folgt aus:

<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> 

in der Konsole wieder ich bin auch jetzt sehen folgendes:

XMLHttpRequest kann nicht geladen werden (übertragen Sie hier den JSAPI Link oben, dass ich nicht erlaubt bin zu schreiben). Origin (hier die URL für meinen localhost einfügen) ist nicht erlaubt von Access-Control-Allow-Origin.

Es gibt zahlreiche Hinweise auf ähnliche Fehler zu diesem im ganzen Netz, jeweils etwas anders, mit Lösungen vorgeschlagen, die sich auf JSON, JQUERY, AJAX usw. usw. beziehen, aber nichts, was ich gefunden habe, scheint direkt relevant für was ich Ich versuche es zu tun (dh mache meinem Code die Datei oder Bibliothek zugänglich, in der 'google' definiert ist), und nichts, was ich versucht habe, hat funktioniert.

Sprechen Sie über die versuchen, Ihren Weg durch eine Kohlegrube mit einer Kerze zu finden ... :) Prost

Antwort

12

Ich habe es mit der gcse Rückrufoption arbeiten (Ich habe auch mein Layout im ZSE Control Panel um das Standard-Overlay zu verhindern).

<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

Ich habe das kopiert, was funktioniert, zeigt aber das Suchfeld nicht an? es werden nur noch die Suchergebnisse angezeigt. – shorif2000

+0

versuche, 'searchresults-only' auf 'search' umzustellen –

1

Können Sie den Suchbegriff über die URL weitergeben?

<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> 

Wenn Sie Ihre „Suche“ Seite über yourdomain.com/search?term=searchword die Suchergebnisse rufen sofort angezeigt.

Verwandte Themen