2013-04-26 5 views
11
$.ajax({ 
     url: 'http://intern-dev01:50231/api/language', 
     type: 'GET', 
     dataType: 'json', 
     success: function() { 
      console.log('It Works!'); 
     }, 
     error: function (request,status, error) { 
      console.log(error); 
      alert(status); 
     } 
    }); 

यह AJAX कॉल क्यों काम नहीं करता है ?? अगर मैं ब्राउज़र में कॉल करता हूं तो यह ठीक काम करता है: /।अजाक्स कॉल आग की घटना को आग लगती है लेकिन 200 ठीक है

HTTP/1.1 200 OK 
Content-Length: 122 
Content-Type: application/json; charset=utf-8 
Server: Microsoft-HTTPAPI/2.0 
Date: Fri, 26 Apr 2013 06:56:40 GMT 

[{"LanguageId":1,"LanguageName":"Dansk"},{"LanguageId":2,"LanguageName":"Tysk"},{"LanguageId":3,"LanguageName":"Engelsk"}] 

उत्तर

12

आप ajax प्रतिक्रिया की जाँच करने के अगर यह वैध है या नहीं:

यह वही है Fiddler रिटर्न है। जब आप ajax में निर्दिष्ट करें:

dataType: 'json', 

jQuery त्रुटि ईवेंट सक्रिय करेगा अगर प्रतिक्रिया JSON के रूप में पार्स नहीं किया जा सकता है, भले ही सर्वर की ओर 200 ठीक। सर्वर से लौटाए गए डेटा की जांच करें और सुनिश्चित करें कि यह वैध JSON है (JSONLint सेवा आज़माएं)।

यदि लौटाया गया डेटा JSON नहीं है या इसमें वाक्यविन्यास त्रुटियां हैं तो उन्हें अपने सर्वर साइड कोड में ठीक करें। आप सर्वर साइड स्क्रिप्ट से {} वापस लौट सकते हैं।

यह भी प्रयास करें।

$.ajax({ 
    url: 'http://intern-dev01:50231/api/language', 
    type: 'GET', 
    cache: false,   
    complete: function (xhr, status) { 
     if (status === 'error' || !xhr.responseText) { 
      console.log(error); 
      alert(status); 
     } 
     else { 
     console.log('It Works!');. 
     } 
    }   
}); 
+0

यदि मैं jsonp का उपयोग करता हूं तो मुझे parseError – user2314110

+1

@ user2314110 बस डेटा हटाएं टाइप करें: 'json' और कोशिश करें। मेरा संपादन जवाब देखें। –

+0

अभी भी सतर्क त्रुटि – user2314110

5

स्थिति पार्सिंग त्रुटि है क्योंकि स्थिति 200 ओके दिखाती है। समस्या डेटाटाइप में निहित है: जेसन। इसका परीक्षण करने के लिए, रेखा को हटा दें और इसे काम करना चाहिए। इसे ठीक करने के लिए, आप इसे डेटाटाइप में बदल सकते हैं: टेक्स्ट। See this link too for similar question

+0

यही कारण है कि मेरे सिम्फनी डायनामिक फॉर्म त्रुटि ईवेंट को ट्रिगर कर रहे थे, क्योंकि AJAX अनुरोध मुझे अद्यतन फ़ॉर्म का HTML देता है !!! –

+0

मैं जेसन के बजाय सादे पाठ लौटा रहा था। –

0

मुझे पता है कि मैं थोड़ा देर हो चुकी हूं, लेकिन मैं बस एक ही समस्या में भाग गया और यह Google पर शीर्ष खोज परिणामों में से एक है। मैं इस तरह यूआरएल ऊपर डेटाप्रकार ले जाकर इसे ठीक करने में कामयाब रहे:

$.ajax({ 
    type: 'GET', 
    dataType: 'json', 
    url: 'http://intern-dev01:50231/api/language', 
    success: function() { 
     console.log('It Works!'); 
    }, 
    error: function (request,status, error) { 
     console.log(error); 
     alert(status); 
    } 
}); 
+3

यह मूल रूप से एक महत्वपूर्ण मूल्य जोड़ी है इसलिए इसे वास्तव में पूर्व-संरचित तरीके से कोई फर्क नहीं पड़ता है। मुझे नहीं लगता कि जो कुछ भी इस अनुरोध ऑब्जेक्ट को बनाता है, वह देखता है कि डेटा टाइप कुंजी किसी अन्य कुंजी के पहले या बाद में है या नहीं। यह बस इसे बनाता है। यहां लक्ष्य वास्तविक कारण मिल रहा है। –

0

आप एक अलग वेब ऐप्लिकेशन और वेब एपीआई अनुप्रयोगों के साथ स्थानीय स्तर पर परीक्षण कर रहे हैं, तो आपके आवेदन और परीक्षण एपीआई सही ढंग से डेटा भेजने के डिबग और एप्लिकेशन API पर कॉल AJAX के माध्यम से और डेटा वापस।

डोमेन चलाने के समान डोमेन समान नहीं हैं क्योंकि AJAX कॉल सफल फ़ंक्शन पर नहीं पहुंचता है। क्योंकि ब्राउज़र Cross Site request को रोकता है। यदि आप स्थानीय और डीबग में दोनों ऐप प्रकाशित करते हैं, तो यह ठीक काम करता है।

उम्मीद है कि यह किसी के सहायक होगा।

0

यूआरएल पैरामीटर की जांच करें और सुनिश्चित करें कि यह लोड किए गए पृष्ठ के समान है। आप एक क्रॉस-डोमेन AJAX कॉल कर रहे हैं। यदि आप क्रॉस-डोमेन AJAX कॉल करना चाहते थे, तो ध्यान दें कि क्रॉस-डोमेन अनुरोध करने की अनुमति देने वाले एकमात्र डेटा प्रकार "स्क्रिप्ट" और "जेसनपी" हैं।

एक देव वातावरण में इस मुद्दे में भाग लें जहां यूआरएल एक आईपी पता था और पृष्ठ ने उस आईपी को इंगित करने वाले डोमेन-नाम को लोड किया।

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