ASMX JSON NET 4.5用“d”包裹返回响应,如何将“d”改为“body”?

时间:2016-03-30 07:20:39

标签: c# json .net-4.5 asmx

这是我的JSON返回响应,现在使用Fiddler或POSTMAN来测试JSON。

{
  "d": {
    "result": null,
    "errorcode": "test",
    "errormessage": "Invalid signature.",
    "resend": null
  }
}

这就是我想要的“d”到“身体”:

{
  "body": {
    "result": null,
    "errorcode": "test",
    "errormessage": "Invalid signature.",
    "resend": null
  }
}

这是我使用此网址获取响应的asmx代码 - http://localhost:59583/JSONTest.asmx/Test

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Response Test(RequestHeader header)
{
    Response response = new Response();
    response.result = "N";
    response.errorcode = "test";
    response.errormessage = "test";
    response.resend = "N";

    return response;
}

我的回复课程:

public class Response
{
    public string result { get; set; }

    public string errorcode { get; set; }

    public string errormessage { get; set; }

    public string resend { get; set; }
}

注意:我的asmx在此解决方案中没有使用jquery ajax或aspx页面来返回JSON响应。因为我使用的是.NET 4.5而不是2.0,我也理解这个“d”是一个安全的对象。那么任何其他方式只能将对象“d”直接指向“正文”吗?

更新:现在我用aspx页面添加我的解决方案。这是我的代码。这是对的吗?以及ajax如何连接到我的asmx Test()函数?

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="Scripts/jquery-1.3.2.min.js"></script>
    <script type="text/javascript">
        function example() {
            //var result = "";
            $.ajax({
                type: "POST",
                url: "JSONTest.asmx/Test",
                data: "{ }",
                contentType: false,
                success: function (result) {
                    var body = JSON.parse(result.d);
                    // you can access your object here
                    console.log(body.result);
                },
                dataType: "json"//set to JSON    
            })
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    </div>

    </form>
</body>
</html>

更新:使用WCF C#服务修复它。使用它比使用asmx更方便。

1 个答案:

答案 0 :(得分:0)

$.ajax({
   url: 'your-url-here',
   type: "post",
   contentType: false,
   success: function (result) {
   var body = JSON.parse(result.d);
      // you can access your object here
      console.log(body.result);
 }
});