如何将值从AJAX传递到mvc中的代码隐藏?字符串值为null来了

时间:2017-01-18 06:16:34

标签: c# ajax asp.net-mvc

$(document).ready(function () {      
    $("#btn").click(function () {         
        var data = {
            "Username": $("#name").val(),
            "Password":$("#pswd").val()
        }  
        $.ajax({
            url: "/loginform/logdetail",
            data: JSON.stringify(data),
            type: "post",
            ContentType: "application/json;charset=utf-8",            
            datatype: "json", 
            success: function (response) {
                event.preventDefault();
                var result = JSON.parse(response.d);
                if (result.status == "success") {
                    window.location = "https://www.google.co.in";
                    return false;
                }    
            },
            error: function (result) {
                alert("errormessage");
            }
        })   
    });
});

logdetail()方法中,字符串值为null。我如何获得字符串值?

public JsonResult logdetail(string Username, string Password)
{
    return Json(dbform.checkuser(Username,Password),JsonRequestBehavior.AllowGet);                           
}

3 个答案:

答案 0 :(得分:1)

请看下面的解决方案,首先要把preventDefault();在成功函数之外,并在服务器端创建与JSON对象相同的类

public class User { 
 public string Username { get; seet; }
 public string Password{ get; seet; }
}

将行动改为

public JsonResult logdetail(User user) {..}

答案 1 :(得分:1)

您的代码中几乎没有错误:

特别是这2行

contentType: "application/json; charset=utf-8", data: JSON.stringify({ userdataObj: data })

您的ajax代码将变为:

$(document).ready(function () {      
    $("#btn").click(function () {         
        var data = {
            "Username": $("#name").val(),
            "Password":$("#pswd").val()
        }  
        $.ajax({
            url: "/loginform/logdetail",
            data: JSON.stringify({ userdataObj: data }),
            type: "post",
            contentType: "application/json; charset=utf-8",          
            datatype: "json", 
            success: function (response) {
                event.preventDefault();
                var result = JSON.parse(response.d);
                if (result.status == "success") {
                    window.location = "https://www.google.co.in";
                    return false;
                }    
            },
            error: function (result) {
                alert("errormessage");
            }
        })   
    });
});

现在创建一个包含以下详细信息的用户数据类

public class User 
{ 
    public string Username { get; set; }
    public string Password{ get; set; }
}

将控制器更改为以下代码:

[HttpPost]
public JsonResult logdetail(User userdataObj)
{
    return Json(dbform.checkuser(userdataObj.Username,userdataObj.Password),JsonRequestBehavior.AllowGet);                           
}

答案 2 :(得分:0)

你可以做两件事来解决这个问题。

1)使用两个属性(用户名,密码)创建User类,修改logdetail函数,如logdetail(User user),并使用您的javascript ajax调用版本。

2)如果你想使用相同版本的控制器(logdetail(string Username, string Password)),那么你必须修改你的javascript ajax调用。

$(document).ready(function () {      
    $("#btn").click(function () {
        var username = $("#name").val();
        var password = $("#pswd").val();
        $.ajax({
            url: "/loginform/logdetail",
            data: { Username: username, Password: password } 
            type: "post",
            ContentType: "application/json;charset=utf-8",            
            datatype: "json", 
            success: function (response) {
                event.preventDefault();
                var result = JSON.parse(response.d);
                if (result.status == "success") {
                    window.location = "https://www.google.co.in";
                    return false;
                }    
            },
            error: function (result) {
                alert("errormessage");
            }
        })   
    });
});