2013-05-31 3 views
6

मुझे वेबसाइट पर जीसीएस जोड़ने के साथ काम सौंपा गया है। मेरे मुफ्त जीसीएस (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> 

प्राथमिक खोज वह स्ट्रिंग है जिसे मैं स्वचालित रूप से खोजना चाहता हूं। जब घटक प्रस्तुत करते हैं, स्ट्रिंग 'gname = "2DSearch"' संक्षिप्त रूप से प्रकट होता है तो खोज घटकों के सामने आने से ठीक पहले गायब हो जाता है, फिर कुछ और नहीं होता है। https://stackoverflow.com/questions/15871911/passing-optional-search-parameters-into-google-custom-search-query

मैं और कुछ प्रासंगिक के लिए घंटे के एक नंबर के लिए व्यर्थ में वेब खोज की है:

इस प्रश्न (अनुत्तरित) के साथ कुछ समानताएं यहां दिखाई देते हैं।

क्या कोई मुझे बता सकता है कि यह क्यों काम नहीं कर रहा है और/या मुझे क्या करने की ज़रूरत है?

मेरी माफ़ी, मैंने प्रोग्रामिंग के बहुत सारे काम किए हैं लेकिन जब एचटीएमएल & जावास्क्रिप्ट की बात आती है तो मैं लगभग अशिक्षित हूं। धन्यवाद जिम

मुझे पता चला कि क्रोम कंसोल निम्न त्रुटि दिखा रहा है: Uncaught 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 लोड नहीं हो सकता है (ऊपर जेएसपीआई लिंक डालें जो मुझे पोस्ट करने की अनुमति नहीं है)। उत्पत्ति (यहां मेरे लोकहोस्ट के लिए यूआरएल डालें) को एक्सेस-कंट्रोल-ऑब्जेक्ट-ऑरिजन द्वारा अनुमति नहीं है।

जेएसओएन, जेक्वायरी, एजेक्स इत्यादि का जिक्र करने के लिए प्रस्तावित समाधानों के साथ, नेट पर इस तरह की त्रुटियों के समान त्रुटियों के कई संदर्भ हैं, लेकिन जो कुछ भी मैंने पाया है, उससे सीधे प्रासंगिक नहीं है। मैं करने की कोशिश कर रहा हूं (यानी मेरे कोड को फ़ाइल या लाइब्रेरी में उपलब्ध कराएं जिसमें 'google' परिभाषित किया गया है), और मैंने जो भी प्रयास नहीं किया है, वह काम कर चुका है।

एक मोमबत्ती के साथ एक कोलमाइन माध्यम से अपने तरीके खोजने की कोशिश कर के बारे में बात ... :) चीयर्स

उत्तर

12

मैं इसे जीसीएसई कॉलबैक विकल्प के साथ काम कर गया है (मैं भी सीएसई नियंत्रण कक्ष में मेरी लेआउट बदल डिफ़ॉल्ट ओवरले को रोकने के लिए)।

<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' को 'खोज' में बदलने का प्रयास करें –

1

क्या आप यूआरएल के माध्यम से खोज शब्द पारित कर सकते हैं?

<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 के माध्यम से अपने "खोज" पृष्ठ कहते हैं खोज परिणाम तुरंत दिखाई देते हैं।

संबंधित मुद्दे