JSON生成问题

时间:2011-09-01 09:29:35

标签: jquery asp.net json

这样我试图生成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)

3 个答案:

答案 0 :(得分:0)

首先:你不需要对此进行字符串化。第二:执行GET而不是POST,因为你有多个参数。

您还可以创建一个新类:

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

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

答案 1 :(得分:0)

你得到什么错误?

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

答案 2 :(得分:0)

看起来你url错了。我想你正在打电话给网络服务。此外,您还不需要stringify数据,因为它已经很好地形成了JSON

更改

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

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