从ajax发送时动作参数获取值为null是可以的

Posted

技术标签:

【中文标题】从ajax发送时动作参数获取值为null是可以的【英文标题】:Action parameter getting value null while sending it from ajax is ok 【发布时间】:2021-12-14 03:52:03 【问题描述】:

我在 ASP.NET Core 中有一个问题,通过使用 jQuery ajax 发送的动作参数问题是从 ajax 发送的数据是可以的,但是在动作参数中,它变成了 null。

sn-p的代码是这样的

jQuery ajax 代码就像

   function SaveOrderData() 
        alert("start1");
        var rowitem = "";

       // var OrderList = [];
        var OrderList = new Array();
         $("#mytable tr").each(function () 
            var Order = ;
            var self = $(this);
            Order.OSRC = self.find("td:eq(0)").text().trim();
            Order.ICOD = self.find("td:eq(3)").text().trim();
            Order.TRCD = self.find("td:eq(4)").text().trim();
            Order.QNTY = self.find("td:eq(5)").text().trim();
            Order.RATE = self.find("td:eq(6)").text().trim();
            Order.ARAT = self.find("td:eq(7)").text().trim();
            Order.UNIT = $("#DDUNIT").val();
            Order.DVCD = $("#DDDVCD").val();
            Order.DBCD = $("#DDSALMAN").val();
            Order.ORDN = $("#TXTORDN").val();
            Order.PCOD = $("#DDPCOD").val();
            Order.TXCD = $("#DDTXCD").val();
            Order.AGCD = $("#DDAGCD").val();
            Order.ORDT = $("#TXTORDT").val();
            Order.PORD = $("#TXTPORD").val();
            OrderList.push(Order); // add order object to list object
         );
        alert(JSON.stringify(OrderList));
            $.ajax(
            url: "@Url.Action("SaveOrder", "SaleOrder")",
            type: "GET",
           // data: JSON.stringify(OrderList),
            data:  pendingTestResult: OrderList ,
            contentType: "application/json",
            dataType: "json",
            success: function (response) 
          
                if (response == true) 
                // //   ShowMsn("Order have been saved successfully."); // show success notification
                //   // ClearForm(); //clear form fields
                //    $('#mytable').empty(); // clear table items
                //   // CheckSubmitBtn(); // disable submit button
                // else 
                //  //  ShowMsn("An error has ocurrer while processing the Transaction.");
                 
            
        );

    ;

控制器方法是

public JsonResult SaveOrder(List pendingTestResult)

    
        foreach (ORDMAN ordman in pendingTestResult)
        
            _db.ORDMAN.Add(ordman);
        
        _db.SaveChanges();
        

        bool Result = true;
        return Json(Result);
    

我根据这个答案尝试了..但没有工作 附文件 enter image description here

Parameter Null

【问题讨论】:

您需要在 AJAX 数据和 C# 方法中使用相同的参数名称。您能否尝试在您的 C# 方法中使用 pendingTestResult 而不是 OrderList。 【参考方案1】:

由于要传递json类型的数据给action,可以尝试在ajax中使用POST请求:

js:

function SaveOrderData() 
        alert("start1");
        var rowitem = "";

       // var OrderList = [];
        var OrderList = new Array();
         $("#mytable tr").each(function () 
            var Order = ;
            var self = $(this);
            Order.OSRC = self.find("td:eq(0)").text().trim();
            Order.ICOD = self.find("td:eq(3)").text().trim();
            Order.TRCD = self.find("td:eq(4)").text().trim();
            Order.QNTY = self.find("td:eq(5)").text().trim();
            Order.RATE = self.find("td:eq(6)").text().trim();
            Order.ARAT = self.find("td:eq(7)").text().trim();
            Order.UNIT = $("#DDUNIT").val();
            Order.DVCD = $("#DDDVCD").val();
            Order.DBCD = $("#DDSALMAN").val();
            Order.ORDN = $("#TXTORDN").val();
            Order.PCOD = $("#DDPCOD").val();
            Order.TXCD = $("#DDTXCD").val();
            Order.AGCD = $("#DDAGCD").val();
            Order.ORDT = $("#TXTORDT").val();
            Order.PORD = $("#TXTPORD").val();
            OrderList.push(Order); // add order object to list object
         );
        alert(JSON.stringify(OrderList));
            $.ajax(
            url: "@Url.Action("SaveOrder", "SaleOrder")",
            type: "POST",
           data: JSON.stringify(OrderList),
            contentType: "application/json",
            dataType: "json",
            success: function (response) 
          
                if (response == true) 
                // //   ShowMsn("Order have been saved successfully."); // show success notification
                //   // ClearForm(); //clear form fields
                //    $('#mytable').empty(); // clear table items
                //   // CheckSubmitBtn(); // disable submit button
                // else 
                //  //  ShowMsn("An error has ocurrer while processing the Transaction.");
                 
            
        );

    ;

行动:

[HttpPost]
        public IActionResult SaveOrder([FromBody]List<Order> OrderList) 
            foreach (ORDMAN ordman in pendingTestResult)
            
                _db.ORDMAN.Add(ordman);
            
            _db.SaveChanges();


            bool Result = true;
            return Json(Result);
        

【讨论】:

以上是关于从ajax发送时动作参数获取值为null是可以的的主要内容,如果未能解决你的问题,请参考以下文章

ajax 将 null 发送到 MVC Api 控制器

jquery ajax获取返回值为null

将空参数从 Ajax 发送到控制器

AJAX的url中文参数问题

RestTemplate 发送 get 请求使用误区 多个参数传值为null(转载)

AJAX:POST-PUT-DELETE的问题