使用 JSON 将用户定义的对象从 jQuery 传递到 ASP.NET Webmethod

2024-04-08

我正在尝试将一些简单的 JSON 从 jQuery 传递到 ASP.NET 4.5 Webmethod。它并没有按照我想要的方式工作。如果我接受输入作为单独的参数,它就会起作用:

[WebMethod]
public static Address GetJSonAddress(string name, string street)

但如果我尝试将它作为一个对象,它就不起作用,传入的内容只是 null:

[WebMethod]
public static Address GetJSonAddress(Address newAddress)

我尝试过使用 DataContractJsonSerializer 的 Webmethods、Pagemethods、WCF...什么也没有。 Address 类用 Datamember/DataContract 进行适当的修饰。属性匹配,包括大小写。

在 jQuery 中,我尝试了所有传递数据的方式,包括将其包装在 Address 对象中...如果我以任何其他方式执行此操作,则不会调用 Webmethod,并且收到错误 500:

Save2 = function () {
var address = { prefix: GLOBALS.curr_prefix };

$('input[id^=' + GLOBALS.curr_prefix + '],select[id^=' + GLOBALS.curr_prefix + ']').each(function () {
       address[this.id.substr(4)] = $.trim($(this).val());
})

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "/WebServices/Insert",
    data: JSON.stringify(address),
    dataType: "json",
    success: function (data, textStatus) {
        console.log(data, textStatus);
    },
    failure: function (errMsg) {
        MsgDialog(errMsg);
    }
});
}

最终我将不得不使用 121 个输入字符串来完成此操作,并且真的不希望有一个具有 121 个参数的方法。任何帮助表示赞赏。


我很快就建立了这个项目,并且能够成功调用我的网络方法,请相应地调整您的代码。确保您的类属性名称相同作为您通过 JavaScript 传递的内容。

网络服务

    public static Contact getContact(Contact cnt)
    {
        cnt.name = "Abijeet Patro";
        cnt.phone = "Blah Blah";
        return cnt;
    }

JavaScript/jQuery

    $(document).ready(function () {
        var cnt = {name:'Hello',phone:'Hello'};
        $.ajax({
            type: "POST",
            url: "/Default.aspx/getContact",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: JSON.stringify({'cnt':cnt}), // Check this call.
            success: function (data) {
                debugger;
            }
        });
    });

Class

public class Contact
{
    public string name { get; set; }
    public string phone { get; set; }
}


您可以从以下位置获取该项目here https://github.com/Abijeet/blog-projects/tree/master/JsonBasedWebMethod。另外请使用 fiddler 或 Chrome 来监控 AJAX 请求/响应。我添加了一个图像来展示如何使用 Chrome 监控 AJAX 请求。 Fiddler 甚至更好、更详细。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JSON 将用户定义的对象从 jQuery 传递到 ASP.NET Webmethod 的相关文章

随机推荐