Why jQuery ajax jsonp request gives error? -
<कोड> "fnServerData": समारोह (SURL, aoData, fnCallback, oSettings) {oSettings.jqXHR = $ .ajax ( { "url": SURL, "डाटा": aoData, "सफलता": fnCallback, "त्रुटि": समारोह (एमएसजी) {चेतावनी (एमएसजी);}, "डेटाप्रकार": "jsonp", "कैश": झूठी}) ; },जब मैं यह अनुरोध करता हूँ, तो सर्वर प्रतिक्रिया देता है।
स्थिति कोड: 200 ठीक कैश-नियंत्रण: अधिकतम-आयु = 0 सामग्री- भाषा: एन सामग्री प्रकार: आवेदन / जावास्क्रिप्ट समाप्ति: गुरु, 12 जुला 2012 06:23:18 GMT Last-Modified: गुरु, 12 जुला 2012 06:23:18 GMT Vary: Accept-भाषा, कुकी < / प्री>
और रिस्पांस बॉडी में एक जेसन डेटा।
लेकिन अजाक्स कोड का कहना है कि इसमें एक त्रुटि है, और "त्रुटि" कोड ब्लॉक में जा रहा है।
इसकी स्थिति 200 है, जबकि यह त्रुटि क्यों दे रहा है?
अद्यतन:
Django सर्वर कोड में:
response_dict = {} response_dict.update ({ 'aaData': aaData}) response_dict.update ({ 'sEcho': sEcho, 'iTotalRecords': iTotalRecords, 'iTotalDisplayRecords': iTotalDisplayRecords, 'sColumns': sColumns}) प्रतिक्रिया = HttpResponse (simplejson.dumps (response_dict), माइम प्रकार = 'आवेदन / जावास्क्रिप्ट')
सर्वर प्रतिक्रिया गद्दी के साथ JSON होते हैं?
आप देखते हैं, देखते हैं अलग डोमेन से डेटा प्राप्त करने के दो तरीके:
नया है, लेकिन एक से अलग
एक्सेस-नियंत्रण-अनुमति-मूल शीर्षक से भेजने की आवश्यकता है सर्वर। ब्राउज़र समर्थन भी कुछ हद तक सीमित है।
किसी सर्वर हैडर पर भरोसा नहीं करता है बल्कि इसे तथाकथित 'padding' के साथ JSON डेटा वापस भेजने की आवश्यकता है :
कॉलबैक ('{"आपका": ["json", "डेटा"}')
आपकी जावास्क्रिप्ट लाइब्रेरी (jQuery इस मामले में) फिर इसे एक नए
स्क्रिप्ट टैग में अपने ब्राउज़र को यह मूल्यांकन करने के लिए छेड़छाड़ कर रखता है। इस
कॉलबैक फ़ंक्शन के अंदर jQuery JSON डेटा पार्स करता है और इसे आपके
fnCallback पर भेजता है। उसके बाद यह पृष्ठ से अनावश्यक
स्क्रिप्ट टैग को निकाल देता है सामान्य तौर पर यह बहुत कमजोर समाधान है लेकिन यह व्यवहार में काम करता है उदाहरण के लिए, यदि सर्वर JSON डेटा पैड नहीं करता है तो आप निम्न कोड को
स्क्रिप्ट टैग के अंदर समाप्त कर देंगे:
'{"your": [ "जेसन", "डेटा"} '
ध्यान दें कि यह सिर्फ एक स्ट्रिंग है और कुछ नहीं करता है इसलिए, जांचें कि क्या सर्वर लिपटे हुए JSON को भेजता है और कच्चे JSON नहीं। मैंने एक ही समस्या में कई बार पहले भाग लिया है और इससे मेरी मदद मिली है।
संपादित करें : चूंकि आपने अपना सर्वर पोस्ट किया है -साइड कोड मुझे लगता है कि आप इसे संशोधित कर सकते हैं। मैंने Django के साथ कभी नहीं खेला है, लेकिन मैं आपको संकेत देने का प्रयास करूंगा:
अनुरोध के अंदर आपको प्राप्त होने वाला पैरामीटर होना चाहिए < कोड> कॉलबैक - यही वह jQuery है जो आपको भेजता है और आपको पैडिंग के लिए उपयोग करना चाहिए। इसे कहीं और रखें: जैसे मैंने कहा था कि मैं सटीक एपीआई नहीं जानता हूं लेकिन आपको कॉलबैक = अनुरोध प्राप्त होता है। GET ["callback"] < / Li>
उस ग्राहक को भेजने से पहले अपने प्रतिक्रिया के बाद
प्रतिक्रिया = एचटीटीपीपीएस + "(" + Simplejson.dumps (response_dict) + ");", माइमप्रकार = 'एप्लिकेशन / जावास्क्रिप्ट')
यह काम करना चाहिए।
Comments
Post a Comment