javascript - using jQuery AJAX with asp.net webservices always goes to error: instead of success: -
समस्या
मेरे पास ए एएसएक्सएक्स वेब सर्विस फाइल (उसी वेबसाइट पर) पर एजेक्स अनुरोध प्रतिक्रिया जो वापस आती है, वह संगत नहीं है, हालांकि, "सफलता" कॉल बैक के विपरीत "त्रुटि" jQuery कॉलबैक को लगातार चलाता है। स्थिति कोड 200, 12030, और 12031 के बीच अलग-अलग होता है। कॉलबैक के लिए संदेश का responseText
असंगत रूप से [रिक्त] और वास्तविक XML के बीच भिन्न होता है जो कि जेएसएन वेब सेवा रिटर्न मैं कोड को डीबग कर दिया, और webservice वास्तव में किसी भी अपवाद के बिना निष्पादित किया गया है।
एएसपीएक्स कोड
// संक्षेप के लिए छोड़ा गया कोड
& lt; script type = "text / javascript" & gt ; JQuery (दस्तावेज़) .ready (कार्य () (jQuery.ajax ({type: "POST", contentType: "application / json; charset = utf-8", यूआरएल: "callDequeue.asmx / dequeue", डेटा: "{ } ", डेटा प्रकार:" जेसन ", सफलता: फ़ंक्शन (संदेश) {चेतावनी ('सफलता:' + संदेश। प्रतिक्रिया पाठ);}, त्रुटि: फ़ंक्शन (संदेश) {चेतावनी ('विफल:' + संदेश.स्टैटस + ': '+ Msg.responseText);}}};}); & Lt; / स्क्रिप्ट & gt;
// संक्षेप के लिए अस्वीकृत कोड
वेब सेवा कोड
[वेबसाइस (नामस्थान = " Http://tempuri.org/ ")] [वेबसाइसबिंग (कन्फर्फोटो = WsiProfiles.BasicProfile1_1)] [ScriptService] सार्वजनिक वर्ग CallDequeue: System.Web.Services.WebService {[WebMethod] सार्वजनिक स्ट्रिंग Dequeue () {वापसी" {\ " घ \ ": {\" FirstName \ ": \" Keivan \ "}}"; }}
जब आप सेवा को एक ScriptService के रूप में चिह्नित करते हैं, तो यह स्वतः JSON सीरियलाइजेशन को संभालता है । आपको मैन्युअल रूप से प्रतिक्रिया को क्रमबद्ध नहीं करना चाहिए।
यदि आप "फर्स्टनेम" के रूप में वापस आने की वापसी चाहते हैं, तो आप सिंटैक्स को नियंत्रित करने के लिए डीटीओ वर्ग का उपयोग कर सकते हैं। बस एक स्ट्रिंग लौट जाने पर, यह {'d': 'Keivan'} के बजाय {'d': {'FirstName': 'Keivan'}} के रूप में आ जाएगा।
[ScriptService] पब्लिक क्लास कॉल डिकू्यू: सिस्टम। वेब। सेवा। वेबसेवा {सार्वजनिक वर्ग PersonDTO {सार्वजनिक स्ट्रिंग फर्स्ट नामे; } [WebMethod] सार्वजनिक व्यक्तिटीटीओ डिक्यू () {var p = नया PersonDTO (); P.firstName = "Keivan"; वापसी पी; }}
कॉलिंग वाक्यविन्यास में कुछ बदलाव:
jQuery (दस्तावेज़) .ready (function () {jQuery.ajax ({type: " पोस्ट ", contentType:" application / json; charset = utf-8 ", url:" callDequeue.asmx / dequeue ", डेटा:" {} ", डेटा प्रकार:" json ", सफलता: फ़ंक्शन (संदेश) {// जब तक आप 2.0 का उपयोग कर रहे हैं, डेटा वापस आती है / / एक .d ऑब्जेक्ट में / / // यह सिर्फ Msg.d होगा यदि आप डीटीओ के बजाय एक स्ट्रिंग लौटते हैं। चेतावनी ('सफलता:' + संदेश .d.FirstName);}, त्रुटि: फ़ंक्शन (संदेश) {चेतावनी ('असफल:' + संदेश.स्टैटस + ':' + संदेश.प्रस्पतिक टेक्स्ट);}});});
आप रुचि रखते हैं, तो आप पढ़ सकते हैं।
अपडेट:
ASP.NET 2.0 का उपयोग कर, आपको स्थापित करने की आवश्यकता है इसके अतिरिक्त, (सबसे विशेष रूप से एचटीटीपीहैंडर्स अनुभाग)।
Comments
Post a Comment