2013-08-29 9 views
5

Typeahead.js ट्विटर से एक बहुत ही लोकप्रिय ऑटोसॉशन लाइब्रेरी है।टाइपआहेड.जेएस क्रॉस डोमेन अनुरोध कर सकते हैं?

मैंने अभी स्थापित किया है और यह JSONP के माध्यम से क्रॉस डोमेन अनुरोधों का समर्थन नहीं करता है। मुझे रिमोट उत्पत्ति के बारे में त्रुटि नहीं मिली है।

मैंने चारों ओर गुगल किया है और मुझे इससे संबंधित कुछ भी नहीं मिला है।

क्या कोई यह पुष्टि कर सकता है कि यह कार्यक्षमता समर्थित है या नहीं।

+0

टाइपहेड स्वयं समान समर्थन नीति/एक्सेस-कंट्रोल-अनुमति-उत्पत्ति के मुद्दों को "समर्थन"/ओवररुल नहीं कर सकता - यह पूरी तरह से ब्राउज़र पर निर्भर है। यदि आप टाइपहेड पर स्रोत के रूप में क्रॉस डोमेन अनुरोध चाहते हैं, तो आपको किसी अन्य संदर्भ में उस चुनौती से निपटने के दौरान ऐसा करना होगा। – davidkonrad

उत्तर

5

आपके पहले मुद्दे के बारे में, आपके त्रुटि संदेश के आधार पर, आपने इसे सही ढंग से लागू नहीं किया हो सकता है क्योंकि टाइपहेड JSONP अनुरोध निष्पादित नहीं कर रहा है।

Typeahead.js v0.9.3 आप डेटाप्रकार के रूप में 'jsonp' से गुजर रहा है, इस तरह से एक JSONP अनुरोध निष्पादित कर सकते हैं के रूप में:

$('.typeahead').typeahead({ 
    name: 'jsonpExample', 
    remote: { 
    // ... 
    dataType: 'jsonp' 
    } 
}); 

आपको लगता है कि Typeahead अब JSONP अनुरोधों को निष्पादित करेंगे मिल जाएगा ।

अद्यतन

अपने दूसरे अंक का जवाब देने में। लेखक ने JSONP का समर्थन करने के लिए लक्षित किया है - और बड़े पैमाने पर यह काम करता है - लेकिन यह वर्तमान संस्करण में कुछ किनारे के मामलों में ठीक से काम नहीं करता है।

उदाहरण के लिए, यदि आपको "कॉलबैक" के अलावा किसी अन्य प्रश्न का उपयोग करके JSONP अनुरोध को ट्रिगर करने की आवश्यकता है, तो आप अटक जाएंगे। इस या इसी तरह की स्थिति में, आपके पास दो विकल्प हैं:

1) पैच typeahead.js स्वयं JSONP काम करने के लिए। उदाहरण के लिए, कॉलबैक नाम समस्या, can be fixed by a simple solution

2) पूर्ण jQuery AJAX ऑब्जेक्ट का खुलासा होने पर v0.10 को रिलीज़ होने की प्रतीक्षा करें। दुर्भाग्यवश यह वादा किए गए डिलीवरी तिथि से एक महीने पहले है और कोई संकेत नहीं है कि आने वाले हफ्तों में यह समाप्त हो जाएगा

2

0.10.5 के साथ, यह दूरस्थ सर्वर पर काम करता है। सी ब्लैंचर्ड के उत्तर के शीर्ष पर, मुझे ajax में jsonp विशेषता की आवश्यकता थी।

var items = new Bloodhound({ 
    ... 
    remote: { 
    url: 'http://localhost/api/items?q=%QUERY', 
    ajax: { 
     jsonp: 'callback', 
     dataType: 'jsonp' 
    } 
}); 
items.initialize() 
... 
$('.typeahead').typeahead(null, { 
    ... 
    source: items.ttAdapter() 
}); 
संबंधित मुद्दे