2012-06-12 20 views
5

पर JSONP पहुंच में मैं JSONP का उपयोग कर सर्वर से डेटा प्राप्त करने का प्रयास कर रहा हूं jQuery की AJAX विधि के साथ।"(कॉलबैक विधि) को परिभाषित नहीं किया गया है" फ़ायरफ़ॉक्स एडोन

$.ajax({ 
    dataType: "jsonp", 
    url: "https://secure.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json", 
    type: "GET", 
    data: "msg=aaa", 
    cache: true, 
    jsonp: "jsoncallback", 
    // jsonpCallback: "callbackmethod", 

    success: function(encryptedMsg){ 
     console.log("Encryption success!"); 
    }, 
    error: function(req, errmsg, thrownError) { 
     console.log("Error: HTTP " + req.status + " " + errmsg); 
    } 
}); 

हालांकि, निम्न त्रुटि त्रुटि कंसोल में दिखाया गया है:

Error: jQuery1720502636097747291_1339479763752 is not defined 
Source File: https://secure.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=jQuery1720502636097747291_1339479763752&msg=aaa 
Line: 1 

आप स्रोत फ़ाइल URL खोलने हैं, तो आप JSON निम्नलिखित देख सकते हैं, और यह सही JSON लगता है।

jQuery1720502636097747291_1339479763752({ 
    "title": "Recent Uploads tagged cat", 
    // ... 
    "items": [ 
    { 
     "title": "Chaton", 
     // ... 
    }, 
    // ... 
    ] 
}) 

मैं भी jsonpCallback साथ विधि नाम निर्दिष्ट करने की कोशिश की: "callbackmethod" है, लेकिन यह काम नहीं किया। मैंने $ .getJson() विधि और jquery-jsonp (http://code.google.com/p/jquery-jsonp/) का भी उपयोग किया लेकिन परिणाम वही था।

ब्राउज़र फ़ायरफ़ॉक्स है और HTML4 का उपयोग कर रहा है। इसका उपयोग फ़ायरफ़ॉक्स एडन में किया जाता है।

आप यहाँ पूर्ण कोड पढ़ सकते हैं: https://builder.addons.mozilla.org/addon/1048275/revision/749
मैं पहले से

धन्यवाद आम-content.js में getEncryptedMessage समारोह में $ .ajax का उपयोग करें।

+2

तो, क्या आपने jsonp कॉलबैक निर्दिष्ट किए बिना प्रयास किया? jQuery को आपके लिए इसे संभालना चाहिए। – alexn

+0

हाँ, मैंने कोशिश की है। मैंने इस कोड में फ़्लिकर तक पहुंचने का प्रयास किया और इसे निर्दिष्ट करना है, लेकिन वास्तव में मैं अपने स्वयं के वेब ऐप तक पहुंच बनाना चाहता हूं। मैंने "jsonp:" निर्दिष्ट किए बिना पहुंचने का प्रयास किया जब मैंने अपना स्वयं का सर्वर ऐप इस्तेमाल किया। –

उत्तर

3

फ़ायरफ़ॉक्स एक्सटेंशन में JSONP का उपयोग न करें। यदि यह काम करता है, तो यह एक सुरक्षा समस्या होगी क्योंकि इसने कुछ वेब सर्वर को आपके एक्सटेंशन के संदर्भ में कोड चलाने की अनुमति दी है। आपके मामले में यह काम नहीं करता है क्योंकि content scripts don't access the web page directly। जेएसओएनपी स्क्रिप्ट वेब पेज के संदर्भ में चलती है और सामग्री स्क्रिप्ट द्वारा परिभाषित कार्यों को नहीं देख पाती है।

आपको किसी भी वेब सर्वर से अनुरोध करने के लिए request module का उपयोग करना चाहिए, यह JSON प्रारूप का समर्थन करता है। आप इसे निश्चित रूप से किसी सामग्री स्क्रिप्ट से उपयोग नहीं कर सकते हैं लेकिन आप एक्सटेंशन पर एक संदेश वापस भेज सकते हैं, एक्सटेंशन को अनुरोध करना चाहिए और सर्वर प्रतिक्रिया को सामग्री स्क्रिप्ट पर वापस भेजना चाहिए। communicating with content scripts पर दस्तावेज़ देखें।

+0

ओह ... फ़ायरफ़ॉक्स एक्सटेंशन में JSONP गलत तरीका था। ठीक है, मैं अनुरोध करने की कोशिश करूँगा। धन्यवाद! –

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