如何使用ajax调用布尔Web方法

时间:2014-02-27 10:40:16

标签: c# jquery ajax

我想使用ajax调用来检查Boolean是true还是false。 这是我的网络方法:

[WebMethod]
public Boolean Login(string uname, string password)
{
    if (ValidateUser(uname, password))
    {
        FormsAuthentication.Authenticate(uname, password);
        return true;
    }
    return false;
}

这是我的ajax调用,但它不能正常工作

$(document).ready(function () {
    $('#btnLogin').click(function () {
        var username = "test"
        var password = "1234"
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "wsLogin.asmx/Login",
            data: "{uname: '" + username + "'" + ",pwd: '" + password + "' }",
            dataType: "Json",
            success: function (success) {

                alert("Boolean True");
            },
            error: function (error) {

                alert("Boolean False");
            }
        });
    });
});

我正在尝试创建一个登录名,所以我使用布尔值来检查用户是否经过身份验证

3 个答案:

答案 0 :(得分:1)

不幸的是,ajax似乎是.toString()的答案,所以布尔值变为" True"或"错误"如果你返回一个Json数据结构而不是像

那样
 return Json(new { Error = true, ErrorMessages = new []{e.Message} });

值将是真正的布尔值。

答案 1 :(得分:1)

我遇到了同样的问题。 我意识到error: function (error) {}永远不会被调用,即使我的webmethod返回false

实际发生的是,只要webmethod本身不产生任何错误(如异常),那么错误函数永远不会触发!网络方法永远是成功的!

所以将你的真/假逻辑放在成功函数中:

$(document).ready(function () {
        $('#btnLogin').click(function () {
            var username = "test"
            var password = "1234"
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "wsLogin.asmx/Login",
                data: "{uname: '" + username + "'" + ",pwd: '" + password + "' }",
                dataType: "Json",
                success: function (result) {
                    if(result == "true")
                        alert("Boolean True");
                    else
                        alert("Boolean False");
                },
                error: function (error) {

                    error = error; //do nothing
                }
            });
    });
});

答案 2 :(得分:0)

试试这个:

$(document).ready(function () {
        $('#btnLogin').click(function () {
            var username = "test"
            var password = "1234"
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "wsLogin.asmx/Login",
                data: "{uname: '" + username + "'" + ",pwd: '" + password + "' }",
                dataType: "Json",
                success: function (data) {
                    if(data)
                        alert("Boolean True");
                    else
                        alert("Boolean False");
                },
                error: function (error) {

                    alert("Error");
                }
            });
    });
});