2009-06-05 14 views
7

मुझे last.fm एपीआई के लिए एक तुल्यकालिक अनुरोध करने की आवश्यकता है, लेकिन जब मैं एक साथ जीईटी और जेसन का उपयोग करता हूं, तो अनुरोध अतुल्यकालिक हो जाता है।तुल्यकालिक jquery json अनुरोध

मेरी कोड:

$.ajax({ 
     async: false, 
    dataType: "json", 
    url: "http://ws.audioscrobbler.com/2.0/?method=artist.getimages&artist="+artist+"&api_key="+apiKey+"&format=json&callback=?", 
    success: function(html){ 
      imgURL = html.images.image[1].sizes.size[0]["#text"]; 
    } 
}); 

अगर मैं डेटाप्रकार निकालें: "json" या पोस्ट का उपयोग करें, इसे फिर से तुल्यकालिक है, लेकिन मैं दोनों json का उपयोग करने और पाने पर निर्भर कर रहा हूँ।

कोई विचार?

उत्तर

13

आह, ऐसा इसलिए है क्योंकि आप क्रॉस-डोमेन अनुरोध करने की कोशिश कर रहे हैं, और क्रॉस-डोमेन अनुरोध गतिशील स्क्रिप्ट टैग पर भरोसा करते हैं, जो कभी भी तुल्यकालिक नहीं हो सकता है, डेटाटाइप जेसन और जीईटी विधि का उपयोग करना चाहिए।

यदि आप कोई पोस्ट करते हैं या डेटाटाइप को हटाते हैं, तो आपको same-origin नीति के कारण एक्सेस त्रुटि मिल जाएगी। यह तुरंत वापस आ जाएगा, लेकिन एक विफलता के रूप में।

+0

हम्म, अनुमान है कि मुझे फिर एक और रास्ता खोजना होगा ... वैसे भी जवाब के लिए धन्यवाद। –

+0

क्या वह जेएसओएन स्ट्रिंग को टेक्स्ट के रूप में वापस ला सकता है और JSON स्ट्रिंग को अपने सफलता() फ़ंक्शन में json2.js का उपयोग करके www.json.org से किसी ऑब्जेक्ट में पार्स कर सकता है? –

+0

@Lunchy उसके पक्ष में अनुरोध को पुनर्निर्देशित करने के लिए कुछ भी नहीं है। किसी अन्य डोमेन से डेटा प्राप्त करने का एकमात्र तरीका स्क्रिप्ट टैग और कॉलबैक फ़ंक्शन का उपयोग करना है। यह निश्चित रूप से प्रतीत होता है कि सेवा को यूआरएल के रूप में कॉलबैक फ़ंक्शन निर्दिष्ट करके बिल्कुल तैयार किया गया है। आप अवरुद्ध अनुकरण कर सकते हैं, लेकिन केवल जावास्क्रिप्ट 1.7 का उपयोग कर सकते हैं। http://hyperstruct.net/2008/5/17/synchronous-invocation-in-javascript-part-1-problem-and-basic-solution http://www.neilmix.com/2007/02/07/threading -इन-जावास्क्रिप्ट -17 / – cgp

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