Mvc Jquery Ajax Post返回null
我一直在试图发布两个参数…这是ajax代码
function Kaydet() { var params = {}; var Kiralayan = $("#RentForm").serialize(); params.kisi = Kiralayan ; params.aracid = P.AracID; console.log(params); $.ajax({ type: "POST", url: '@Url.Action("Save","AracKirala")', data: params, dataType: "text", success: function (response) { if (response != "OK") { alert("Kayıt yapılamadı."); } else { document.getElementById("RentForm").reset(); alert("Kayıt başarıyla gerçekleştirildi."); $("#myModal").modal('hide'); Ara(); } } });
方法
public ActionResult Save(Kiralayan kisi = null, int aracid = 0) {
问题是ajaxpost“aracid”正确,但当方法被触发时,“kisi”变为null …我试图不发布“aracid”与“kisi”,所以ajax张贴一个参数“kisi”,但不合作…
如果序列化表单,那么可以使用.param()
函数为其添加.param()
var data = $("#RentForm").serialize() + '&' + $.param({ 'aracid': AracID }, true); $.ajax({ type: "POST", url: '@Url.Action("Save","AracKirala")', data: data, ....
MVC会为你映射对象,所以你不妨跳过对象内表单的抽取嵌套。
笔记:
- 如果
aracid
也是模型中的一个属性,它将映射到属性和额外的参数。 - 在
serialize()
集合上使用push比在serialize()
调用之前串联string的替代方法更可维护。
例如
var Kiralayan = $("#RentForm").serialize(); // Add the extra non-form parameter Kiralayan.push({name: 'aracid', value: P.AracID});
完整的例子:
function Kaydet() { var Kiralayan = $("#RentForm").serialize(); // Add the extra non-form parameter Kiralayan.push({name: 'aracid', value: P.AracID}); console.log(params); $.ajax({ type: "POST", url: '@Url.Action("Save","AracKirala")', data: Kiralayan, dataType: "text", success: function (response) { if (response != "OK") { alert("Kayıt yapılamadı."); } else { document.getElementById("RentForm").reset(); alert("Kayıt başarıyla gerçekleştirildi."); $("#myModal").modal('hide'); Ara(); } } });