2011-12-05 26 views
5

मैं याहू स्वत: पूर्ण पुनर्प्राप्त करने का प्रयास कर रहा हूं। http://ff.search.yahoo.com/gossip?output=fxjson&command=queryjQuery: याहू स्वतः पूर्ण/स्वत: सुझाव

तो मेरे पास है:

$("selector").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: "http://ff.search.yahoo.com/gossip", 
       dataType: "jsonp", 
       data: { 
        "output" : "fxjson", 
        "command" : request.term 
       }, 
       success: function(data) { 
        response(data[1]) 
       } 
      }) 
     } 
    }); 

और यहाँ एक उदाहरण है: http://jsfiddle.net/yQbdb/

किसी को गलती से या क्या मुझे लगता है मैं गलत कर रहा हूँ स्पॉट सकते हैं

याहू JSON यूआरएल यह है ? यह काम करना चाहिए।

धन्यवाद

+0

वाह, एक बग की तरह दिखता है। – noob

उत्तर

1

मेरे लिए outputjsonp लिए काम करता है की स्थापना।

आउटपुट की संरचना के लिए example query देखें।

स्पष्टीकरण नीचे है।

कोड HERE है।

$("#wd6450").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: "http://ff.search.yahoo.com/gossip", 
      dataType: "jsonp", 
      data: { 
       "output": "jsonp", 
       "command": request.term 
      }, 
      success: function(data) { 
       var suggestions = []; 
       // for each element in the data.gossip.results array ... 
       $.each(data.gossip.results, function(i, val) { 
        // .. push the value of the key inside our array 
        suggestions.push(val.key); 
       }); 
       // call response with our collected values 
       response(suggestions); 

      } 
     }); 
    } 
}); 

स्पष्टीकरण:

dataType: "jsonp" jQuery का उपयोग करके उम्मीद उत्पादन प्रारूप JSONP में किया जाना है। जब आप output: "fxjson" का उपयोग करके अपने कोड से कॉल करते हैं तो यूआरएल this जैसा दिखता है लेकिन जैसा कि आप देख सकते हैं कि आउटपुट वैध JSONP नहीं है, क्योंकि कॉलबैक नहीं कहा गया था।

दूसरी ओर जब आपके द्वारा निर्दिष्ट output: "jsonp" क्वेरी this तरह लग रहा है और जैसा कि आप देख सकते हैं उत्पादन पर एक वैध JSONP है - कॉलबैक बुलाया गया था।

आपने टिप्पणियों में एक अमेज़ॅन उदाहरण को जोड़ा है। $.ajax() कॉल पर यूआरएल this जैसे यूआरएल की कोशिश करेगा। अमेज़ॅन के webservice से आउटपुट वैध JSONP है, क्योंकि कॉलबैक को सभी डेटा के साथ बुलाया जाता है।

तो परिणाम है: याहू webservices JSONP में प्रारूप वापस आ जाएगी अगर आप output: "jsonp" साथ $.ajax() कॉन्फ़िगर करके URL में ?output=jsonp पैरामीटर प्रदान करते हैं। अमेज़ॅन का webservice बिना किसी अतिरिक्त पैरामीटर के डिफ़ॉल्ट रूप से इस प्रारूप को देता है। यह webservice विशिष्ट विन्यास है और इसके दस्तावेज़ीकरण या अन्य संबंधित संसाधनों से परामर्श लेना चाहिए।

JSONP के बारे में जानकारी HERE उपलब्ध जानकारी।

+0

वैसे यह सही है लेकिन यह मुझे समझ में नहीं आता है। क्या आप इसे मेरे पास तोड़ सकते हैं ताकि मैं इसे भविष्य में भी इस्तेमाल कर सकूं? क्योंकि कल्पना करें कि मैं eBay के ऑटोसॉज़ का उपयोग कर रहा हूं: http://anywhere.ebay.com/services/suggest/?q=test जिसमें कोई आउटपुट इत्यादि नहीं है। धन्यवाद – jQuerybeast

+0

@jQuerybeast 'output' से' fxjson' को '$ बना रहा था। अजैक्स गुस्से में क्योंकि जेएसओएनपी कॉलबैक बुलाया नहीं जा रहा था। मैंने इसे AJAX कॉल में एक त्रुटि हैंडलर जोड़कर पाया। फिर मैंने 'आउटपुट' को बदलने की कोशिश की और यह काम करना शुरू कर दिया। – kubetz

+0

JSONP को डेटा टाइप से बुलाया जा रहा है। और यदि आपको आउटपुट को jsonp पर सेट करना पड़ा तो यह कैसे काम करता है: http://jsfiddle.net/HaQTA/? – jQuerybeast

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