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(); } } });