【问题标题】:Ajax cannot call webform's webmethod in asp.net and C#Ajax 无法在 asp.net 和 C# 中调用 webform 的 webmethod
【发布时间】:2017-09-16 12:20:51
【问题描述】:

这是我的 Ajax 函数:

function createSalesInvoice() {
  var SalesInvoice = {};
    SalesInvoice.PaidAmount = $("#textbox1").val();
    SalesInvoice.RemainingAmount = $("#textbox2").val();       
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/AjaxRequestToServer.aspx/createSalesInvoice", //URI   
        data: '{SalesInvoice: ' + JSON.stringify(SalesInvoice) + '}',
        dataType: "json",
        success: function (data) {

            bootbox.alert("Item Added Successfully", function (e) { });

            GetSalesInvoiceItemsList();
            $("#hdfFlag").val("false");
        },
        error: function (xhr) {
        }
    });
}

我无法拨打我的[webmethod]。文本框中的所有值都返回正确。我想在表格中插入这些值。

[WebMethod]
        public static int createSalesInvoice(SalesInvoiceEntity SalesInvoice)
        {
            int i = SalesInvoiceManager1.createSalesInvoice(SalesInvoice);
            return i;
        }

【问题讨论】:

  • 您是否在 createSalesInvoice() 中添加了 [WebMethod] 属性?
  • @HamedJavaheri 是的.. 请查看我的网络方法有问题的编辑
  • 您检查过您的数据属性是否正确吗?
  • 您在页面中使用 ScriptManager 吗?
  • @HamedJavaheri 不。我不使用任何 ScriptManager

标签: c# jquery asp.net ajax asp.net-ajax


【解决方案1】:

需要检查data

传入的参数
 SalesInvoice.FinalAmount = $("#txtGrandTotal").val();
 SalesInvoice.PaidAmount = $("#txtTotalPaid").val();
 SalesInvoice.RemainingAmount = $("#txtTotalRemAmt").val();

如果上述参数是整数,如 In webmethod 参数 - (SalesInvoiceEntity SalesInvoice) 则应由

转换为 int
SalesInvoice.FinalAmount = parseInt($("#txtGrandTotal").val());

而且 value 不能为空,而是 0。

希望它有效。

【讨论】:

    【解决方案2】:
     data: '{SalesInvoice: ' + JSON.stringify(SalesInvoice) + '}',
    

    这应该是

    data: JSON.stringify({'SalesInvoice':SalesInvoice }),
    

    您的 Javascript 函数应该如下所示,只更改了一行。 并且将 javscript 对象名称更改为“SalesInvoiceJS”只是为了方便区分。

       function createSalesInvoice() {
      var SalesInvoiceJS = {};
    
        SalesInvoiceJS.FinalAmount = $("#txtGrandTotal").val();
        SalesInvoiceJS.PaidAmount = $("#txtTotalPaid").val();
        SalesInvoiceJS.RemainingAmount = $("#txtTotalRemAmt").val();
       // alert(SalesInvoiceJS.TotalInvoiceValue); ----------------This alert is working fine and return all above values correct.
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "/AjaxRequestToServer.aspx/createSalesInvoice", //URI   
            data: JSON.stringify({'SalesInvoice':SalesInvoiceJS }),
            dataType: "json",
            success: function (data) {
    
                bootbox.alert("Item Added Successfully", function (e) { });
    
                GetSalesInvoiceItemsList();
                $("#hdfFlag").val("false");
            },
            error: function (xhr) {
            }
        });
    }
    

    参考:From this place。

    【讨论】:

    • @DinkarVeer 您可以将默认正确值设置为 SalesInvoiceJS 对象而不是文本框值吗?和测试功能。
    • 您将不得不学习如何使用浏览器的工具进行调试。了解如何查找 JavaScript 错误并监控网络流量。检查您的函数实际上是否被调用等。
    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2011-07-06
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多