为什么我在 HttpPost 方法 Ajax 调用中在控制器上得到一个空参数?
Why do I get an empty parameter on the controller in my HttpPost method Ajax call?
我有一个视图在运行时向其添加无序列表和列表项,然后循环获取输入的值,将信息推送到一个对象,然后对我的 Ajax 调用方法。
我总是在控制器上得到一个空参数,console.log(assetWeighJsonDetail)
显示输入的内容,所以我确保我没有传递空对象(见下图):
// 客户端脚本:
var assetSerialNumber = "";
var weight = 0;
var assetWeighJsonDetail = [];
$(".ul-asset-weigh").each(function () {
var classNameSelected = this.id;
$("." + classNameSelected).each(function () {
assetSerialNumber = $(this).attr('id');
weight = $(this).val();
assetWeighJsonDetail.push({
OriginID: classNameSelected,
AssetSerialNumber: assetSerialNumber,
Weight: weight
});
});
});
console.log(assetWeighJsonDetail);
$.ajax({
url: "/AssetWeigh/SaveAssetWeigh",
data: JSON.stringify({assetWeighJsonDetail}),
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
traditional: true,
success: function (response) {
if (response) {
alert("success");
}
else {
alert("fail");
}
},
error: function (exception) {
}
});
// 控制台:
// 控制器方法:
[HttpPost]
public ActionResult SaveAssetWeigh(List<AssetWeighJsonDetail> assetWeighJsonDetail)
{
bool success = false;
success = assetWeighJsonDetail != null && assetWeighJsonDetail.Count > 0;
return Json(success);
}
// 方法的 class 列表参数:
public class AssetWeighJsonDetail
{
public int OriginID { get; set; }
public string AssetSerialNumber { get; set; }
public decimal Weight { get; set; }
}
您应该尝试使用 $.post
如果使用 $.ajax
我也遇到过同样的问题并且无法正常工作,只是切换到 $.post
就可以了。
$.post( "/AssetWeigh/SaveAssetWeigh", parameters, function() {
alert( "success" );
})
.done(function() {
alert( "second success" );
})
.fail(function() {
alert( "error" );
})
.always(function() {
alert( "finished" );
});
我在 phone 上,无法输入所有内容,稍后我会尝试从我的计算机更新
我有一个视图在运行时向其添加无序列表和列表项,然后循环获取输入的值,将信息推送到一个对象,然后对我的 Ajax 调用方法。
我总是在控制器上得到一个空参数,console.log(assetWeighJsonDetail)
显示输入的内容,所以我确保我没有传递空对象(见下图):
// 客户端脚本:
var assetSerialNumber = "";
var weight = 0;
var assetWeighJsonDetail = [];
$(".ul-asset-weigh").each(function () {
var classNameSelected = this.id;
$("." + classNameSelected).each(function () {
assetSerialNumber = $(this).attr('id');
weight = $(this).val();
assetWeighJsonDetail.push({
OriginID: classNameSelected,
AssetSerialNumber: assetSerialNumber,
Weight: weight
});
});
});
console.log(assetWeighJsonDetail);
$.ajax({
url: "/AssetWeigh/SaveAssetWeigh",
data: JSON.stringify({assetWeighJsonDetail}),
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
traditional: true,
success: function (response) {
if (response) {
alert("success");
}
else {
alert("fail");
}
},
error: function (exception) {
}
});
// 控制台:
// 控制器方法:
[HttpPost]
public ActionResult SaveAssetWeigh(List<AssetWeighJsonDetail> assetWeighJsonDetail)
{
bool success = false;
success = assetWeighJsonDetail != null && assetWeighJsonDetail.Count > 0;
return Json(success);
}
// 方法的 class 列表参数:
public class AssetWeighJsonDetail
{
public int OriginID { get; set; }
public string AssetSerialNumber { get; set; }
public decimal Weight { get; set; }
}
您应该尝试使用 $.post
如果使用 $.ajax
我也遇到过同样的问题并且无法正常工作,只是切换到 $.post
就可以了。
$.post( "/AssetWeigh/SaveAssetWeigh", parameters, function() {
alert( "success" );
})
.done(function() {
alert( "second success" );
})
.fail(function() {
alert( "error" );
})
.always(function() {
alert( "finished" );
});
我在 phone 上,无法输入所有内容,稍后我会尝试从我的计算机更新