繁体   English   中英

将AJAX调用上的对象发送到WebMethod

[英]Sending object on AJAX call to WebMethod

我正在尝试将JSON对象发送到C#方法,并返回另一个(也是JSON)对象。

该对象是用JavaScript创建的:

    lottery = {
        TotalValue: totalValue,
        Players: txtPlayers.value,
        TicketPrice: txtAmount.value,
        FirstPrize: prize,
        MyComission: myComission,
        MyRate: myRate,
        SellerComission: sellerComission,
        SellerRate: sellerRate
    }

然后通过AJAX发送:

function CreateLottery(lottery) {
$.ajax({
    type: 'POST',
    url: 'default.aspx/Create',
    data: lottery,
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (data, status) {
        alert(status)
    },
    error: alert("error!")
 });
}

后面的C#代码(我有断点,但从未到达过这里):

    [WebMethod]
    public static object Create(Lottery lottery)
    {
        return new
        {
            foo = "bar",
        };
    }
    public class Lottery
    {
        public decimal TotalValue { get; set; }
        public decimal Players { get; set; }
        public decimal TicketPrice { get; set; }
        public decimal FirstPrize { get; set; }
        public decimal MyComission { get; set; }
        public decimal MyRate { get; set; }
        public decimal SellerComission { get; set; }
        public decimal SellerRate { get; set; }
    }

为什么我总是得到“错误”! 警报?

首先对数据进行字符串化:

var lottery = {
    TotalValue: totalValue,
    Players: txtPlayers.value,
    TicketPrice: txtAmount.value,
    FirstPrize: prize,
    MyComission: myComission,
    MyRate: myRate,
    SellerComission: sellerComission,
    SellerRate: sellerRate
}

function CreateLottery(lottery) {
$.ajax({
    type: 'POST',
    url: 'default.aspx/Create',
    data: JSON.stringify(lottery),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (data, status) {
        alert(status);
    },
    error: function () {
        alert("error!");
    }
 });
}

编辑:您的错误回调定义不正确,并且每次进行Ajax调用时都会触发。 如上所示进行修改。

您可以将数据发送到Web方法,下面提供两种方法

方法1

您可以像这样通过Web方法传递每个属性值:

function CreateLottery(lottery) {
$.ajax({
    type: 'POST',
    url: 'default.aspx/Create',
    data: {'TotalValue': totalValue, 'Players': txtPlayers.value,'TicketPrice': txtAmount.value, 'FirstPrize': prize,     'MyComission': myComission, 'MyRate': myRate, 'SellerComission': sellerComission, 'SellerRate': sellerRate},
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (data, status) {
        alert(status)
    },
    error: alert("error!")
 });
}

方法二

使用JSON.stringify(lottery)将数组对象更改为字符串。

var lottery = {
    TotalValue: totalValue,
    Players: txtPlayers.value,
    TicketPrice: txtAmount.value,
    FirstPrize: prize,
    MyComission: myComission,
    MyRate: myRate,
    SellerComission: sellerComission,
    SellerRate: sellerRate
}


function CreateLottery(lottery) {
$.ajax({
    type: 'POST',
    url: 'default.aspx/Create',
    data: JSON.stringify(lottery),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (data, status) {
        alert(status)
    },
    error: alert("error!")
 });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM