ajax使用pur请求怎么传参,数组参数传递给控制器的方式
開發工具與關鍵技術:Visual Studio 與jquery、C#
作者:黃燦
撰寫時間:2019.7.5
在項目上多多少少都會有些地方會使用到批量增刪改的地方,刪除可以通過ID獲取到每一條數據然后拼接起來傳遞到控制器,然后在控制器里分割字符串,進行foreach循環刪除,新增需要通過for循環獲取到數據,但是也不能每獲取到一條數據就傳參一次數據,所以我把for循環獲取到的數據封裝到一個數組里面,然后通過數組傳遞給后臺控制器,數組的傳參我試過了多種方法:一、jquery.form插件里的ajaxSbumit提交,二、ajax異步請求提交,三、直接post請求提交。三種方法我都嘗試過了,最終得到的結果是ajaxSbumit提交是不能把數組傳遞過去的,獲取到數組,控制器也是為null,ajax異步請求提交和直接post請求提交這兩種方法是可行的
Javascript循環獲取數據把獲取的數據添加到數組里的代碼:
var PurchaseDetailArray
= new Array();//申明一個數組
var tr = $("#tabDetail").find("tr");
//循環獲取表格中的信息
for (var i = 1; i < tr.length - 1; i++) {
//獲取采購訂單配件明細的信息
var PartsID = $("#PartsID" + i).val();//獲取配件ID
var VehicleTypeID = $("#VehicleTypeID" + i).val();//獲取車型ID
var Quantity = $("#Quantity" + i).val();//獲取數量
var Discount = $("#Discount" + i).val();//獲取折扣
var Money = $("#Money" + i).val();//獲取金額
var ActualQuantity = $("#ActualQuantity" + i).val();//獲取實收數量
var ArrayDetail = new Object();//申明一個對象
ArrayDetail = { PartsID:
PartsID, VehicleTypeID: VehicleTypeID, Quantity: Quantity, Discount: Discount,
Money: Money, ActualQuantity: ActualQuantity };//對象賦值
PurchaseDetailArray.push(ArrayDetail); //使用push()方法想數組里添加對象
}
因為表格中有表頭行,索引是從零開始,所以i從1開始,不循環表頭行;循環長度i <
tr.length – 1是因為表格里最后一行是計算總值,最后一行也不需要循環,所以循環長度為獲取到的表格長度-1減去最后一行
方式一:ajax異步請求提交
Javascript代碼:
$.ajax({
url: '@Url.Action("savePurchasrOrder")',
data: { "PurchaseDetailArray ":
PurchaseDetailArray },//數組
// data: ArrayDatil, //對象
dataType: "json",
type: "POST",
//traditional: true,
success: function (returnJson) {
if (returnJson.State) {
layer.confirm(returnJson.Text + '\n' + "是否立即審核該采購訂單?\n點擊--該訂單會立即生效" + '\n' + "點擊--只保存當前單據但不生效,只有審核后,該單據才會生效"
+ '\n' + "\n現在未審核,下次打開未審核的單據時,您可以進行審核!", { icon: 3, title: "提示" }, function () {
Audit();//調用審核的方法
});
}
else {
layer.alert(returnJson.Text, { icon: 0, title: "提示" });
}
}
});
ajax請求提交是異步請求,傳遞的data可以為數組也可以為對象,我傳遞的是數組
方法二、直接post請求提交
Javascript代碼:
$.post("/ProcurementAndSales/PurchaseOrder/savePurchasrOrder",
{
PurchaseDetailArray:
PurchaseDetailArray,
}, function (returnJson) {
layer.close(layIndex);
if (returnJson.State) {
layer.confirm(returnJson.Text + '\n' + "是否立即審核該采購訂單?\n點擊--該訂單會立即生效" + '\n' + "點擊--只保存當前單據但不生效,只有審核后,該單據才會生效"
+ '\n' + "\n現在未審核,下次打開未審核的單據時,您可以進行審核!", { icon: 3, title: "提示" }, function () {
Audit();//調用審核的方法
});
}
else {
layer.alert(returnJson.Text, { icon: 0, title: "提示" });
}
});
因為ajax異步請求的請求類型也是post,所以直接使用post請求提交也是可以把數組傳遞過去的
控制器Controller代碼:
因為代碼有點長,所以這里只給出循環保存數組的代碼
public ActionResult savePurchasrOrder(SYS_PurchaseDetail sysPurchaseDetail, List PurchaseDetailArray)
這里接受數組是要List一個表接收的這個表是你存放數組里的數據的表
//foreach循環保存數組里的數據
foreach (var ArrayData in
PurchaseDetailArray)
{
//查詢剛剛新增的采購訂單的主鍵ID,新增的ID肯定在最后一條數據
var selPurchasrOrderID
= (from tbPurcharsOrder in
myModels.PW_PurchaseOrder
select new
{
PurchaseOrderID = tbPurcharsOrder.PurchaseOrderID,
}).ToList();
int listID =
selPurchasrOrderID.LastOrDefault().PurchaseOrderID;
sysPurchaseDetail.PurchaseOrderID = listID;//查出來的主鍵ID,賦值到明細的外鍵
//把數組里的數據賦值添加到表中的字段
sysPurchaseDetail.PartsID = ArrayData.PartsID;
sysPurchaseDetail.VehicleTypeID = ArrayData.VehicleTypeID;
sysPurchaseDetail.Quantity = ArrayData.Quantity;
sysPurchaseDetail.Discount = ArrayData.Discount;
sysPurchaseDetail.Money = ArrayData.Money;
sysPurchaseDetail.ActualQuantity = ArrayData.ActualQuantity;
myModels.SYS_PurchaseDetail.Add(sysPurchaseDetail);
myModels.SaveChanges();
}
jquery.form插件里的ajaxSbumit提交是不可行的,所以代碼就不列舉出來了
標簽:控制器,PurchaseDetailArray,sysPurchaseDetail,參數傳遞,獲取,數組,var,returnJson
來源: https://blog.csdn.net/weixin_44542088/article/details/94766873
總結
以上是生活随笔為你收集整理的ajax使用pur请求怎么传参,数组参数传递给控制器的方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css3小球坠落,CSS3 圆球体内的小
- 下一篇: 原生 ajax查询,原生ajax啦啦啦