2013-08-16 7 views
10

बिना JSON प्रतिक्रिया प्राप्त करने के लिए मैं jQuery के माध्यम से इस URLjQuery क्रॉस-डोमेन अनुरोध कॉलबैक

http://www.iheartquotes.com/api/v1/random?format=json 

से एक JSON प्राप्त करने का प्रयास कर रहा हूँ। मुझे पता है कि समाधान जेएसओएनपी है, लेकिन चूंकि मेरे पास सेवा के प्रतिक्रिया पाठ पर कोई नियंत्रण नहीं है या इसे अपने कॉलबैक फ़ंक्शन में लपेटने के लिए, मेरा उद्देश्य क्लाइंट-एंड स्क्रिप्ट का उपयोग करके उपरोक्त यूआरएल की प्रतिक्रिया को किसी भी तरह से पुनर्प्राप्त करना है।

मैंने स्टैक ओवरव्लो से कई उत्तरों से सुझाए गए लगभग सभी तरीकों का प्रयास किया है। ये कोड ब्लॉक हैं जिन्हें मैंने आजमाया है और मुझे मिली प्रतिक्रिया है।

1। एक सीधा कॉल जो उम्मीद पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति त्रुटि दी

$.getJSON("http://www.iheartquotes.com/api/v1/random?format=json", 
    function(data) { 
    alert(data);   
    }); 

प्रतिक्रिया:

XMLHttpRequest cannot load =1376682146029">http://www.iheartquotes.com/api/v1/random?format=json&=1376682146029. Origin http://stackoverflow.com is not allowed by Access-Control-Allow-Origin.

2। कॉलबैक पैरामीटर के साथ उपरोक्त कोड कहा:

$.getJSON("http://www.iheartquotes.com/api/v1/random?format=json&callback=?", 
    function(data) { 
    alert(data);   
    }); 

प्रतिक्रिया:

Uncaught SyntaxError: Unexpected token :

कृपया ध्यान दें कि जब मैं त्रुटि पर क्लिक करें, यह मुझे उम्मीद JSON उत्तर करने के लिए ले जाता है।

{"json_class":"Fortune","tags":["simpsons_homer"],"quote":"Holy Moly! The bastard's rich!\n\n\t\t-- Homer Simpson\n\t\t Oh Brother, Where Art Thou?","link":"http://iheartquotes.com/fortune/show/5501","source":"simpsons_homer"} 

यह भी उम्मीद है क्योंकि प्रतिक्रिया में कोई कॉलबैक फ़ंक्शन परिभाषित नहीं किया गया है।

3। के माध्यम से jQuery के अजाक्स विधि

$.ajax({ 
    type: "GET", 
    dataType: "jsonp", 
    url: "http://www.iheartquotes.com/api/v1/random?format=json", 
    success: function(data){   
    alert(data); 
    }, 
}); 

प्रतिक्रिया:

Uncaught SyntaxError: Unexpected token :

ऊपर कार्य करने के लिए कॉलबैक पैरामीटर जोड़ना प्रतिक्रिया नहीं बदलता है।

यूआरएल से JSON पुनर्प्राप्त करने के लिए विशेषज्ञों से कोई मदद या पॉइंटर्स? मैं क्रोम देव उपकरण से इसका परीक्षण कर रहा हूं। मुझे पता है कि मैं सर्वर-एंड कोड से सेवा को कॉल कर सकता हूं और फिर इसे क्लाइंट-एंड पर भेज सकता हूं। लेकिन मैं देखना चाहता हूं कि यह क्लाइंट-एंड से अकेले jQuery के माध्यम से किया जा सकता है या नहीं।

संपादित करें: केविन बी की टिप्पणी के आधार पर: jQuery के अजाक्स का उपयोग करके YQL के माध्यम से अपेक्षित आउटपुट प्राप्त हुआ। लेकिन मेरा सवाल वही बना हुआ है। क्या jQuery के माध्यम से ऐसा करने का कोई मूल तरीका है क्योंकि YQL अभी भी एक निर्भरता है?

// Using YQL and JSONP 
$.ajax({ 
    url: "http://query.yahooapis.com/v1/public/yql", 

    // the name of the callback parameter, as specified by the YQL service 
    jsonp: "callback", 

    // tell jQuery we're expecting JSONP 
    dataType: "jsonp", 

    // tell YQL what we want and that we want JSON 
    data: { 
     q: "select * from json where url=\"http://www.iheartquotes.com/api/v1/random?format=json\"", 
     format: "json" 
    }, 

    // work with the response 
    success: function(response) { 
     console.log(response.query.results.json); // server response 
    } 
}); 

यह अपेक्षित प्रतिक्रिया देता है।

+2

सर्वर-साइड हस्तक्षेप के बिना संभव नहीं है। नोट, यह * आपका * सर्वर, गूगल YQL होना आवश्यक नहीं है। –

+1

या यहां आलेख देखें: http: //learn.jquery।com/AJAX/working-with-jsonp/ –

+0

हे @ केविनबी, वाईक्यूएल सूचक के लिए एक गुच्छा धन्यवाद। आपके सुझाव एक तरह से काम किया। मैंने नया कोड भी शामिल करने के लिए अपना प्रश्न संपादित किया है। –

उत्तर

1

यह सभी ब्राउज़रों में काम करेंगे नहीं, लेकिन JQuery का कौन सा संस्करण पर निर्भर करता है आप कोशिश का उपयोग कर रहे:

$.support.cors = true; 

जाहिर है यह भी सर्वर प्रतिक्रिया के हेडर पर निर्भर करता है।

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