Mvc Jquery Ajax Post返回null

时间:2015-09-02 12:24:55

标签: jquery ajax asp.net-mvc

我一直试图发布两个参数... 这是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)
    {

问题是ajax帖子“aracid”正确但当“方法被触发时”kisi“变为空... 我试着不用“kisi”发布“aracid”所以ajax很好地发布了一个参数“kisi”,但是没有合作......

2 个答案:

答案 0 :(得分:4)

如果序列化表单,则可以使用.param()函数为其添加其他值

var data = $("#RentForm").serialize() + '&' + $.param({ 'aracid': AracID }, true);

$.ajax({
    type: "POST",
    url: '@Url.Action("Save","AracKirala")',
    data: data,
    ....

答案 1 :(得分:1)

MVC将为您映射对象,因此您也可以跳过对象中表单的提取嵌套。

说明:

  • 如果aracid也是模型中的属性,它将映射到 属性额外参数。
  • 使用serialise()集合上的推送比serialize()调用之前串联字符串的替代方法更易于维护。

<强> e.g。

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

            }
        });