动作未接收AJAX数据

时间:2015-07-04 19:57:27

标签: c# jquery ajax asp.net-mvc

我的动作是没有收到其中一个AJAX参数,有谁知道为什么?

AJAX

 $('#formLista').submit(function (e) {
            e.preventDefault();
            if ($(this).validate()) {
                $.ajax({
                    url: '@Url.Action("CriarListaAcesso")',
                    type: 'POST',
                    dataType: 'JSON',
                    data: $(this).serialize() + '&idLista=@ViewBag.codLista',
                    success: function (obj) {
                        if (obj.success == true) {
                            alert('Acesso definido com sucesso');
                            $('#fecharAcLista').click();
                        }
                        else {
                            alert('### ocorreu um erro ao definir o acesso ###');
                        }

                    }
                }).always(function () {

                });

            }
        });

动作

//I receive the model of the form, but not the idLista string
public ActionResult CriarListaAcesso(UsuarioLista usrListas, string idLista)
{
}

ViewBag.codLista具有表示对象id的字符串。

尝试对Id进行硬编码,仍然接收空字符串

            $.ajax({
            url: '@Url.Action("CriarListaAcesso")',
            type: 'POST',
            data:  {usrListas: $(this).serialize() , idLista : '1234'},
            success: function (obj) {
                if (obj.success == true) {
                    alert('Acesso definido com sucesso');
                    $('#fecharAcLista').click();
                }
                else {
                    alert('### ocorreu um erro ao definir o acesso ###');
                }

            }
        });

操作空字符串图像:http://gyazo.com/05bc1243600b62eab2a14b50da17af10

3 个答案:

答案 0 :(得分:1)

我创建了一个变通方法,将字符串传递给我的模型的一个属性:

<input type="text" hidden name="codLista" value="@ViewBag.codLista">

所以我的ajax调用看起来像这样

$('#formLista').submit(function (e) {
        e.preventDefault();
        if ($(this).validate()) {
            $.ajax({
                url: '@Url.Action("CriarListaAcesso")',
                type: 'POST',
                dataType: 'JSON',
                data: $(this).serialize(),
                success: function (obj) {
                    if (obj.success == true) {
                        alert('Acesso definido com sucesso');
                        $('#fecharAcLista').click();
                    }
                    else {
                        alert('### ocorreu um erro ao definir o acesso ###');
                    }

                }
            }).always(function () {

            });

        }
    });

答案 1 :(得分:0)

你可以做这样的事情

  var v=$("form").serialize();
  v=v.replace("=",":").replace("&",",");

然后将其包装在json括号中

 data:{v},...

希望这有帮助

答案 2 :(得分:0)

你可以创建新的数组元素并附加到序列化数据

var data = $(this).serializeArray();
    data.push({name: 'idLista', value: @ViewBag.codLista});

或将您的表单类型从post转到