从Ajax发送到MVC Controller的未定义变量

时间:2017-06-05 10:07:00

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

我有一种方法,我的用户可以将密码更改为新密码,需要2个变量,一个是新密码,另一个是重复密码。当我调用方法时,它返回字符串“undefined”,并使用该字符串作为新密码,将其保存在db上。 有人能告诉我我做错了什么吗? 控制器:

 [HttpPost]
    public JsonResult ChangePwdEnt(string pwd, string repeatpwd)
    {
        if (pwd == null || repeatpwd == null)
        {
            ViewBag.Error = "Insira os campos obrigatórios";
        }
        else
        {
            if (pwd == repeatpwd)
            {
                changePwd_Entidades(Session["ID"].ToString(),pwd);
                return Json(true,JsonRequestBehavior.DenyGet);
            }
            else
            {
                ViewBag.Error = "As palavras chave precisam de ser iguais";
            }
        }

        return Json(false, JsonRequestBehavior.DenyGet);
    }

脚本:

<script>

$('.alt-btn').on('click', function () {



    $.ajax({
        type: 'POST',
        contentType: 'application/json',
        url: '@Url.Action("ChangePwdEnt", "Home")?pwd=' +
        $('#Info_pwd').val() + '&repeatpwd=' + $('#Info_repeatpwd').val(),

        error: function (e) {
            console.log(e);
        },


        success: function (Changed) {
            if (Changed) {
                window.location = "Entidades";
            } else if (!Changed) {
                window.location = "LoginEntidades";
            }
        }
    });
});

2 个答案:

答案 0 :(得分:0)

在您使用data方法时,在POST参数中发送数据会更好

var data = JSON.stringify({ 
             'pwd': $('#Info_pwd').val(),
             'repeatpwd':$('#Info_repeatpwd').val()
           });

$.ajax({
    type: 'POST',
    contentType: 'application/json',
    url: '@Url.Action("ChangePwdEnt", "Home"),
    data: data,
    error: function (e) {
        console.log(e);
    },


    success: function (Changed) {
        if (Changed) {
            window.location = "Entidades";
        } else if (!Changed) {
            window.location = "LoginEntidades";
        }
    }
});

这是使用POST方法。如果您想使用GET方法,则可以在query string中传递数据。

答案 1 :(得分:0)

我认为你使用了不正确的id来获取密码字段的值。

而不是将两个密码发送到代码更好的方法只是在客户端比较你的两个密码值,如果它们都相同,那么将这些值解析到代码端,另外明智地要求用户输入相同的密码。