.net Core HttpPost method ajax call
I have a view that adds an Unordered list and list items to it at runtime, then I loop through to get the entered values, push the info to an object, and do the ajax call to my method. I have tried everything I’ve found in this forum but I always get an empty parameter on the controller, the console.log(assetWeighJsonDetail) shows what was entered, so I’m making sure I’m not passing and empty object -see image-
// Client side script:
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) { } });
// Console:
// Controller Method:
[HttpPost] public ActionResult SaveAssetWeigh(List<AssetWeighJsonDetail> assetWeighJsonDetail) { bool success = false; success = assetWeighJsonDetail != null && assetWeighJsonDetail.Count > 0; return Json(success); }
// Method’s class List parameter:
public class AssetWeighJsonDetail { public int OriginID { get; set; } public string AssetSerialNumber { get; set; } public decimal Weight { get; set; } }
You should try with $.post
I have faced the same issue if using $.ajax
and was not working and just switching to $.post
made it work.
$.post( "/AssetWeigh/SaveAssetWeigh", parameters, function() { alert( "success" ); }) .done(function() { alert( "second success" ); }) .fail(function() { alert( "error" ); }) .always(function() { alert( "finished" ); });
I’m on my phone and can’t type all of it, I’ll try to update later from my computer