gpt4 book ai didi

json - 从 ASMX Web 服务返回 JSON,没有 XML 包装器?

转载 作者:行者123 更新时间:2023-12-04 15:26:01 25 4
gpt4 key购买 nike

我需要从 C# Web 服务中获取 Json 数据。

我知道有几个基于此的问题,相信我,我已经阅读了很多,但只会让我更加困惑。

这就是我所做的:

在我的网络服务中,我包含了:[System.Web.Script.Services.ScriptService]为类(class) & [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]对于方法

我也用过 JavaScriptSerializer()将我的数据转换为字符串

我正在使用 $.getJSON() 调用此服务

如果我不使用它,我会收到一个跨域引用错误。

为此,我必须设置 m 服务以获取回调函数名称
所以我通过了 his.Context.Request["callback"] + 序列化 Json 数据;

但是在输出中我得到了它

< string xmlns="http://XYZ...">  

标签中的数据采用我需要的格式

我还尝试使用以下方法设置内容类型: $.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; charset=utf-8"});
但仍然没有成功。

后来补充:我接受了法国人的 anwser 因为我知道这是正确的方法,但我仍然不明白它的工作......我只是将网络服务和网站放在同一个域中并使用了 xml,我知道这不是最好的方法,但我已经花了 2 天时间,不能再浪费了。

最佳答案

用这个:

var JsonString = ....;
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "YourWebServiceName.asmx/yourmethodname",
data: "{'TheData':'" + JsonString + "'}",
dataType: "json",
success: function (msg) {
var data = msg.hasOwnProperty("d") ? msg.d : msg;
OnSucessCallBack(data);
},
error: function (xhr, status, error) {
alert(xhr.statusText);
}
});

function OnSuccessCallData(DataFromServer) {
// your handler for success
}

然后在服务器端,在 AppCode 文件夹中自动生成的代码隐藏文件中,您编写如下内容:
using System.Web.Services;
using System.Web.Script.Serialization;

[System.Web.Script.Services.ScriptService]
public class YourWebServiceName : System.Web.Services.WebService
{
[WebMethod]
public string yourmethodname(string TheData)
{
JavascriptSerializer YourSerializer = new JavascriptSerializer();
// custom serializer if you need one
YourSerializer.RegisterConverters(new JavascriptConverter [] { new YourCustomConverter() });

//deserialization
TheData.Deserialize(TheData);

//serialization
TheData.Serialize(TheData);
}
}

如果不使用自定义转换器,则 json 字符串和服务器端对象的 c# 类定义之间的属性必须匹配,反序列化才能工作。对于序列化,如果您没有自定义转换器,json 字符串将包含您的 c# 类的每个属性。您可以添加 [ScriptIgnore]就在 c# 类中的属性定义之前,如果您未指定自定义转换器,则序列化程序将忽略该属性。

关于json - 从 ASMX Web 服务返回 JSON,没有 XML 包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8405458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com