2009-03-19 2 views
8

मैं एक सी # वेब सेवा के साथ jQuery और JSON का उपयोग करने की कोशिश कर रहा हूं। कोई फर्क नहीं पड़ता कि, निम्नलिखित कोड केवल एक्सएमएल में आउटपुट होगा।सी # वेब सेवा जेएसओएन आउटपुट नहीं करेगी, केवल एक्सएमएल

वेब सेवा कोड

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public string HelloWorld() { 
    return "Hello World!"; 
} 

मैं भी इन विशेषताओं वर्ग के लिए आवंटित है

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[ScriptService] 

jQuery कोड

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "ScheduleComputerDS.asmx/HelloWorld", 
    data: "{}", 
    dataType: "jsonp", 
    success: function(data) { 
     alert(data); 
    } 
}); 

ASMX पेज हमेशा retur एनएस सामग्री प्रकार "टेक्स्ट/एक्सएमएल" के रूप में। मुझे कुछ भी याद आ रही है?

संपादन: एक जोड़े को जवाब के जवाब में:

अगर मैं सिर्फ "json" के रूप में डेटाप्रकार है सामग्री अभी भी एक्सएमएल और jQuery भी मेरी कॉलबैक फ़ंक्शन को कॉल नहीं होंगे। अगर मैं "& कॉलबैक = जोड़ता हूं?" यूआरएल के लिए, आईआईएस एक HTTP 500 त्रुटि फेंकता है।

मेरी कक्षा "System.Web.Services.WebService" से प्राप्त होती है।

अपने दोस्तों के उत्तरों पर कुछ शोध करने से, ऐसा लगता है कि मुझे डब्ल्यूसीएफ के साथ गड़बड़ करने की ज़रूरत है। दुर्भाग्य से जेएसओएन जो लौटाया गया है वह एमएस अजाक्स के लिए अधिक डिज़ाइन किया गया है और मेरे उपयोग के लिए बहुत बेकार ब्लोट है। मैं जेरोक या कुछ इसी तरह की ओपन सोर्स लाइब्रेरी में देख सकता हूं।

आपकी सभी मदद के लिए धन्यवाद!

+0

मैं नए स्टैक ओवरफ्लो में नया हूं इसलिए मुझे नहीं पता कि यह टिप्पणी दूसरों के संदर्भ में कैसे दिखाई दे रही है लेकिन ... यदि मेरे पास डेटाटाइप सिर्फ "जेसन" है, तो सामग्री अभी भी एक्सएमएल है और jQuery भी कॉल नहीं करेगा मेरा कॉलबैक फ़ंक्शन अगर मैं "कॉलबैक =" जोड़ता हूं? यूआरएल के लिए, आईआईएस एक HTTP 500 त्रुटि फेंकता है। – TheDude

+0

@TheDude - आप इस जानकारी को जोड़ने के लिए अपना मूल प्रश्न संपादित कर सकते हैं। प्रश्न अनुभाग –

+0

के निचले बाएं टैग पर टैग के नीचे एक संपादन लिंक है यदि आप डब्ल्यूसीएफ आरईएसटी स्टार्टर किट का उपयोग कर सकते हैं, तो बस एक पूर्वावलोकन 2 – bendewey

उत्तर

2

जहाँ तक मुझे पता है, ScriptService सिर्फ स्वचालित रूप से एक जावास्क्रिप्ट प्रॉक्सी (- अपने मामले में ScheduleComputerDS.asmx/js endpoint पते पर/js जोड़कर) बनाने के लिए सेवा की अनुमति देता है विशेषता। यह आपको उस सेवा पर संचालन को कॉल करने की अनुमति नहीं देता है जिस तरह से आप कोशिश कर रहे हैं।

आप इसके बजाय एक विश्वसनीय डब्ल्यूसीएफ सेवा (जिसके लिए .NET 3.5 की आवश्यकता है) का उपयोग कर सकते हैं जिसे आप एक HTTP GET के माध्यम से एक उचित आकार के यूआरआई भेजकर एक्सेस कर सकते हैं।

1

क्या आपने डेटाटाइप json के साथ प्रयास किया है?

इसके अलावा, इस मामले पर एनकोशिया के Using jQuery to Consume ASP.NET JSON Web Services आलेख पर एक नज़र डालें। आम नुकसान पर भी कुछ अच्छी जानकारी है।

6

मुझे लगता है कि उसमें कोई लेखन त्रुटि है:

dataType: "jsonp", 

होना चाहिए:

dataType: "json", 
+0

भयानक जारी किया गया है:) मैंने हाल ही में यह गलती की लेकिन मेरे पास "स्क्रिप्ट" थी। उदाहरण के लिए –

+0

आह से कॉपी और पेस्ट किया गया था, फिर कोई +1 नहीं? lol – eduncan911

+1

मुझे यह एक पुरानी पोस्ट पता है, मैं बस यह सुनिश्चित करना चाहता हूं कि इस पर नया हर कोई गलत तरीके से नहीं गिरता है, इसके 'जेसनपी' कोई टाइपो नहीं है, http://json-p.org/ – Luis