प्रिय भविष्य पाठकों संभालने हूँ सही तरीका। यह आपको JavaScriptSerializer
का उपयोग करने के लिए जोड़ता है और आप एक्सएमएल (या वास्तव में भविष्य में आने वाले किसी भी धारावाहिक प्रारूप) का अनुरोध करने की क्षमता खो देते हैं। "सही तरीके" में भी कम कोड शामिल है!
आप [ScriptService]
विशेषता के साथ अपनी सेवा वर्ग को सजाने है - जो तुम हो - तो ASP.NET 3.5+ स्वचालित रूप से JSON के जवाब serialise चाहिए अपने अजाक्स कॉल अनुरोध प्रदान की JSON। जेएसओएन को क्रमबद्ध करने के सुझाव मैन्युअल रूप से गलत हैं, जब तक कि आप न्यूटॉन्सॉफ्ट जैसे एक अलग धारावाहिक का उपयोग नहीं करना चाहते हैं।
आप XML को देख रहे थे निम्न में से एक पता चलता है कि:
- आप अपने अजाक्स कॉल में JSON अनुरोध नहीं कर रहे हैं - कृपया नीचे दिए गए
- उदाहरण कोड काम संभवत: कुछ web.config प्रविष्टियों याद कर रहे हैं देखने के अनुसार उत्तर here (अस्वीकरण: मेरे पास इनमें से अधिकतर उत्पादन वेब में नहीं है।config; केवल इन के साथ खेलना शुरू करता है, तो कुछ भी नहीं है और कुछ काम करता है)
यहाँ ASMX वेब सेवा सक्षम एक JSON का एक सरल काम कर उदाहरण है:
<%@ WebService Language="C#" Class="WebService" %>
using System;
using System.Collections.Generic;
using System.Web.Services;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {
[WebMethod]
public MyClass Example()
{
return new MyClass();
}
public class MyClass
{
public string Message { get { return "Hi"; } }
public int Number { get { return 123; } }
public List<string> List { get { return new List<string> { "Item1", "Item2", "Item3" }; } }
}
}
जावास्क्रिप्ट यह अनुरोध और प्रतिक्रिया पर कार्रवाई करने के (हम बस यह करना होगा
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Test</title>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.4.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
$.ajax({
type: "POST",
url: "WebService.asmx/Example",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{ }",
error: function (XMLHttpRequest, textStatus, errorThrown) { alert(langError + " " + textStatus); },
success: function (msg) {
alert(msg.d.Message);
}
});
</script>
</body>
</html>
HTTP अनुरोध:
POST http://HOST.com/WebService.asmx/Example HTTP/1.1
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json; charset=utf-8
X-Requested-With: XMLHttpRequest
Referer: http://HOST.com/Test.aspx
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Connection: Keep-Alive
Content-Length: 3
Host: HOST.com
{ }
MyClass.Message से संदेश) के साथ पॉप अप एक जे एस चेतावनी
HTTP प्रतिक्रिया:
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Tue, 20 Feb 2018 08:36:12 GMT
Content-Length: 98
{"d":{"__type":"WebService+MyClass","Message":"Hi","Number":123,"List":["Item1","Item2","Item3"]}}
परिणाम:
"हाय" एक जे एस पॉपअप में प्रदर्शित होता है।
संभावित डुप्लिकेट [एक .NET सेवा से jQuery के साथ JSON डेटा प्राप्त करें: AJAX सेटअप से उलझन में] (http://stackoverflow.com/questions/5690882/get-json-data-with-jquery-from-a- नेट-सर्विस-उलझन-एजेक्स-सेटअप) – GSerg
[एसएसएक्स वेब सेवा का संभावित डुप्लिकेट जेएसओएन कैसे वापस करें और एक्सएमएल नहीं?] (https://stackoverflow.com/questions/14950578/asmx-web-service-how- to-return-json-and-not-xml) –