【问题标题】:JSON generation problemJSON生成问题
【发布时间】:2011-09-01 09:29:35
【问题描述】:

这样我尝试生成 JSON,但出现错误。

var DTO =
        {
            "UserID": $('txtUserID').val(),
            "Pwd": $('txtPassword').val(),
            "isPersistent": $('#chkRemember').attr('checked')
        };

这样我将 json 数据发送到我的服务器端函数'

 $(document).ready(function () {
    $("#btnSubmit").click(function () {
        var DTO =
        {
            "UserID": $('txtUserID').val(),
            "Pwd": $('txtPassword').val(),
            "isPersistent": $('#chkRemember').attr('checked')
        };

        alert(DTO);
        alert(JSON.stringify(DTO));
        $.ajax({
            type: "POST",
            url: "CateGory.aspx/GetData",
            data: JSON.stringify(DTO),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                sHtml = data.d;
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(textStatus);
            }

        });

        return false;
    })
});

我是否犯了任何错误,因为我正在向服务器端函数发送多个参数。

我的服务器端函数看起来像

[WebMethod]
    public static string Authenticate(string UserID,string Pwd,bool isPersistent)
    {
        return "SUCCESS";
    }

所以请指导我如何用 DTO 对象中的数据包装我的多个参数,然后我们可以发出 data: JSON.stringify(DTO)

【问题讨论】:

  • 你试过data: DTO吗?我认为这里根本不需要JSON.stringify()

标签: jquery asp.net json


【解决方案1】:

首先:您不需要将其字符串化。第二:执行 GET 而不是 POST,因为您有多个参数。

你也可以新建一个类:

class SomeObjectToBePosted {
    string UserID { get;set; }
    string Pwd { get;set; }
    bool isPersistant { get;set; }
}

并让它成为您的 WebMethod 的参数。然后你可以再次使用 POST。

【讨论】:

  • 为什么?不能用Post方法发送多个参数吗?
  • @Jan - 想修改你的答案吗?
  • 您可以发布多个参数,但 ASP.NET 会将它们放入一个对象中,因此如果您创建 SomeObjectToBePosted 类,则可以使用该类;因为它将自动填充。如果您只想要现在拥有的 3 个参数,请使用 GET。
【解决方案2】:

你得到什么错误?

使用jQuery你不需要对数据对象进行字符串化,只需写:data:DTO

【讨论】:

    【解决方案3】:

    看起来你url 是错误的。我认为您正在调用网络服务。而且您不必stringify 数据,因为它已经很好地形成JSON

    改变

    url: "CateGory.aspx/GetData",
    data: JSON.stringify(DTO)
    

    url: "CateGory.asmx/GetData",
    data: DTO
    

    【讨论】:

      猜你喜欢
      • 2016-10-23
      • 1970-01-01
      • 2023-02-09
      • 2021-05-02
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多