2013-02-05 13 views
12

मेरे पास यह url कॉल है। यूआरएल अपेक्षा के अनुरूप एक json वस्तु (प्रत्यक्ष ब्राउज़र कॉल) देता है, लेकिन यह मुझेत्रुटि कॉलबैक {"readyState": 4, "स्थिति": 200, "स्थिति टेक्स्ट": "सफलता"}

no good {"readyState":4,"status":200,"statusText":"success"} 

मुझे पता है कि दूसरों stackoverflow पर इसी तरह के सवाल है देता है जब मैं पालन लाइनों

$.ajax({ 
     url: url, 
     type: "GET", 
     dataType:"jsonp", 
     success: function(data) { 
      alert(data); 
     }, 
     error : function(error) { 
      alert("no good "+JSON.stringify(error)); 
     } 
}); 

साथ ajax के माध्यम से ऐसा करते हैं, लेकिन कोई भी इसे हल नहीं करता है।

+0

क्या आपने प्रतिक्रिया डेटा को सत्यापित किया है? –

+2

लेकिन 'यूआरएल' क्या है? –

+1

यदि यह जेसन लौटाता है तो डेटा टाइप जेसन नहीं होना चाहिए jsonp – Musa

उत्तर

32

इससे पता चलता है कि HTTP अनुरोध सफल रहा था लेकिन डेटा को पार्स करने का प्रयास नहीं था।

यानी कि डेटा JSONP के रूप में स्वरूपित नहीं किया गया था।

+0

बुल की आंख! तो एफ * इसे खोजने में आसान यह होगा अगर AJAX त्रुटि संदेश में कह सकता है .... यह एक सामान्य "प्रोग्रामर चीज़" है ... – Christian

+0

जेएस कंसोल में शायद एक और उपयोगी त्रुटि संदेश था ... लेकिन JSONP एक भयानक है पहली जगह हैक (शुक्र है कि अब हमारे पास सीओआरएस है इसलिए हमें JSONP का उपयोग करने की आवश्यकता नहीं है)। – Quentin

4

इन परिवर्तनों ने मेरी समस्या हल की।

// सर्वर साइड

echo $_GET['callback'] . '('.json_encode($data_to_encode).')'; 

// js

$.ajax({ 
     url: url+"?callback=?", 
     type: "GET", 
     dataType:"jsonp", 
     success: function(data) { 
      alert(data); 
     }, 
     error : function(error) { 
      alert("no good "+JSON.stringify(error)); 
     } 
}); 
+0

यदि यह आपका सर्वर है, तो आप JSONP के रूप में प्रतिक्रिया क्यों भेज रहे हैं? सर्वर एक अलग डोमेन से होस्टिंग है? –

+0

हां। सर्वर एक अलग डोमेन में होस्ट करता है। यह एक "एपीआई" डोमेन है और जावास्क्रिप्ट मोबाइल ऐप का हिस्सा है। –

+0

लेकिन क्या यह सिर्फ उप डोमेन है जो अलग है? दूसरे शब्दों में यह 'api.example.com' बनाम 'www.example.com' है? यदि ऐसा है, तो आप अभी भी JSONP से बच सकते हैं। –

1

मैं बस ठीक उसी मुद्दा, { "readyState" मिला है: 4, "स्थिति": 200, "statusText ":" सफलता "}

ऐसा इसलिए था क्योंकि मैं अपनी PHP लिपि में एक गूंज" हैलो "को हटाने के लिए भूल गया था; स्टेटमेंट जिसे मैंने पहले परीक्षण कारणों के लिए बनाया था, इसलिए मेरी PHP स्क्रिप्ट जेएसओएन के साथ एक स्ट्रिंग भेज रही थी, यह मेरी मूर्खतापूर्ण गलती थी शायद आपको भी

+0

में ले जाया जाएगा, यह नहीं था मेरे लिए मुद्दा जैसा कि मैंने अपने जवाब में समझाया –