javascript - AJAX 调用 : Invalid web service call, 参数缺少值

标签 javascript jquery asp.net ajax

我的 ajax 调用失败并出现有问题的消息。

[WebMethod(EnableSession = true)]
public static string UpdateTotalPrice(List<TicketPriceAjax> jsonTickets)
{
    // some server-side processing
    return "a string value";
}    

我试图传递的对象

public class TicketPriceAjax
{
  public string Fullname { get; set; }
  public string Price { get; set; }
  public string TicketDescription { get; set; }       
}

我的 JavaScript 在更改事件上被调用

$("select.combobox").change(function(e) {
    var ticketsArray = GetTicketsArray();        
    postTotalPrice(ticketsArray);
});

function GetTicketsArray() {
    var tickets = {};
    var prices = [];
    tickets.prices = prices;

    $("#divFullNames div.row").each(function () {
        var price = {
            "Fullname": $(this).find("input").val(),
            "Price": $(this).find("select").val(),
            "TicketDescription": $(this).find(":selected").text()             
        };

        tickets.prices.push(price);
    });

    return tickets;
};


function postTotalPrice(prices) {
    $.ajax({
        type: "POST",
        url: "Details.aspx/UpdateTotalPrice",
        data: JSON.stringify(prices),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: true,
        success: function (data) {
            UpdateTotalPrice(data);
        },
        error: function(data, textStatus, jqXHR) {
            console.log('error!', data, textStatus, jqXHR);
        }
    });
};

我做错了什么?

最佳答案

将数据部分更改为此

data: JSON.stringify({jsonTickets:prices})

Your webmethod expects a parameter with name jsonTickets so you need to specify parameter name in data part.

此外,您不需要分配门票。价格只需创建一个数组并将对象推送到其中并将其传递给 webmethod。通过这种方式,您将创建一个列表,然后将列表分配给其属性价格,并且在 webmethod 中您期望列表。

var tickets = [];
$("#divFullNames div.row").each(function () {
    var price = {
        "Fullname": $(this).find("input").val(),
        "Price": $(this).find("select").val(),
        "TicketDescription": $(this).find(":selected").text()             
    };

    tickets.push(price);

这会将列表传递给 webmethods。

关于javascript - AJAX 调用 : Invalid web service call, 参数缺少值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27548275/

相关文章:

javascript - ev.target.id 不返回元素 id

javascript - 从 Url 中提取单词

asp.net - 组装信息

javascript - 如何使用 JS 文件中的 javascript 从 web.config 读取 session 超时值

asp.net - RadNumericTextBox 中的舍入问题

javascript - 正则表达式 - 如何允许空格逗号和字母

javascript - Python Flask 日期实时更新

javascript - html文件上传后如何加载到iframe中?

jquery - ASP.NET - Bootstrap 下拉导航仅在根页面上工作

javascript - 当用户单击 Javascript 中的按钮时复制下拉列表