Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何将json对象发送到MVC4中的控制器操作方法_Asp.net Mvc_Json - Fatal编程技术网

Asp.net mvc 如何将json对象发送到MVC4中的控制器操作方法

Asp.net mvc 如何将json对象发送到MVC4中的控制器操作方法,asp.net-mvc,json,Asp.net Mvc,Json,我正在尝试将我的用户ID和密码发送到我的登录控制器操作方法 //Login button click code $("#btnLogin").click(function () { var userCrdential = { UserName: $("inputEmail3").val(), Password: $("inputPassword3").val() }; $.ajax({ type: "POST",

我正在尝试将我的用户ID和密码发送到我的登录控制器操作方法

//Login button click code

$("#btnLogin").click(function () {
    var userCrdential = {
        UserName: $("inputEmail3").val(),
        Password: $("inputPassword3").val()
    };
    $.ajax({
        type: "POST",
        url: "/Home/Login",
        content: "application/json; charset=utf-8",
        dataType: "json",
        data: userCrdential,
        success: function (res) {
          //  alert("data is posted successfully");
            if (res.success == true)
                alert("data is posted successfully");
            else {
               // alert("Something went wrong. Please retry!");
            }
        },
        error: function (xhr, textStatus, errorThrown) {
            alert(xhr.statusMessage);
        }
    }); 
});
在我的家庭控制器中,我有登录操作方法

    [HttpPost]
    [ActionName("Login")]
    public ActionResult Login(User userCrdential)
    {
        string userIdtest = userCrdential.UserName;
        string userPasswordtest = userCrdential.Password;
        var result=false;

        if (userIdtest != null && userPasswordtest != null)
        {
             result = true;
        }
        else
        {
             result = false;
        }

        return Json(result);
        //return RedirectToAction("Index");
    }

但是我的操作方法没有调用…

您需要将
内容
更改为
内容类型
并调用
JSON。对数据进行字符串化

$.ajax({
    type: "POST",
    url: "/Home/Login",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: JSON.stringify(userCrdential),
    ...
}); 

请参见

不要在MVC中硬编码URL

改为使用
@Url.Action

url: ('@Url.Action("Login", "Home")',
userCrdential
需要JSON编码:

JSON.stringify(userCrdential)
此外,出于同样的理智考虑,请使用
fail
方法

$.ajax("url")
    .done(function() {
    alert("success");
})
    .fail(function() {
    alert("error");
})
最后一点注意,
success
jquery1.8
中被弃用;您应该改用
done

只需将其从:

var userCrdential = {
    UserName: $("inputEmail3").val(),
    Password: $("inputPassword3").val()
};
致:

代码中的所有其他内容都可以,但请确保控制器参数具有在此传递的相同参数,即用户名和密码


但是,在调用ajax之前,您需要检查用户输入。

您好,我在firebug NetworkError上遇到以下错误:404 Not Found—“我在Common.js文件中有我的ajax调用,我的登录控制器操作在我的HomeController中……只需从public ActionResult Login(用户userCrdential)更改控制器操作即可。”公开JsonResult登录(用户userCrdential)。在firebug中显示post正常,但显示以下错误“NetworkError:404未找到-"...... 我从Content文件夹中的Common.js文件中调用了此ajax,我的控制器操作方法位于我的主控制器中……因为如果更改路由器设置,硬编码值将无效,您必须更新两个位置,而不是一个。非常感谢:)
var userCrdential = "UserName=" + $("inputEmail3").val() + "&Password=" + $("inputPassword3").val();