【问题标题】:How to return boolean value from ASP.Net Javascript AJAX request with C# Method?如何使用 C# 方法从 ASP.Net Javascript AJAX 请求返回布尔值?
【发布时间】:2020-01-24 17:40:01
【问题描述】:

背景:我正在尝试调用 C# 函数以从 .aspx 网页上的 JavaScript 代码返回用户名和密码的身份验证结果。

目前我有以下 Javascript AJAX POST 请求。

$.ajax({
            type: "POST",
            url: "Management Login Page.aspx/Authenticate",
            data: { username: username, username: password},
            success: function(data) 
            {
                alert('ok');
                console.log(data);

                if (data.result == true)
                {
                    alert('correct');
                    window.location.replace("Management Page.aspx");
                }
            },
            Error: function ()
            {
                alert('error');
            }

        });

这会从“Management Login Page.aspx”中的“Management_Login_Page”类中调用以下方法“Authenticate”

[WebMethod]
    public static bool Authenticate(string username, string password)
    {
        System.Diagnostics.Debug.WriteLine(username, password);

        if ((username == "test") && (password == "test"))
        {
            return true;
        }

        return false;
    }

它返回整个 html 页面(如下所示),而不仅仅是一个布尔值。

ect.....

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

    <style>
        body {
            padding: 0;
            margin: 0;
        }

        html, body, #Login1 {
            height: 100%;
            font: 10pt "Helvetica Neue", Arial, Helvetica, sans-serif;
            align-content: center;
        }

        .lorem {
            font-style: italic;
            color: #AAA;
        }

        .center {
          display: block;
          margin-left: auto;
          margin-right: auto;
        }
    </style>
</head>
<body class="login login-action-login wp-core-ui  locale-en-us">
    <div id="login">

如果我在 AJAX 请求中添加以下内容,我会在网页上收到错误 500。

dataType: 'json',
contentType: "application/json; charset=utf-8",

如何修改代码以仅返回布尔值?

编辑 - 更新为布尔方法作为测试剩余的字符串

【问题讨论】:

  • 嗨,您的 WebMethod Authenticate 正在返回 string,应该返回 bool
  • Authenticate 方法还能编译吗?
  • 嗨@rcoro,你是对的,它不会编译(错误地将我的头撞在墙上一段时间尝试不同的解决方案)。我已将其更新为返回一个 bool 并继续返回完整的 HTML 页面,但 AJAX 成功并加载页面(因为它不会将数据与 bool 进行比较,而是返回 html)
  • 现在可以了吗?我不知道是否还有问题。

标签: javascript c# asp.net asp.net-ajax


【解决方案1】:

是这样吗?

data: { username: username, username: password},

我看到 2 个用户名。

另外,数据通常是一个字符串:

data: JSON.stringify({ username: "username", username: "password"}),

【讨论】:

    【解决方案2】:

    我找到了另一种使用 PageMethods 使其工作的方法。

    function checkCredentials()
        {
            console.log("Running Credentials Check...");
    
            var username = document.getElementById("user_login").value.toString();
            var password = document.getElementById("user_pass").value.toString();
    
            var op = PageMethods.Authenticate(username,password,onSuccess,onFailed);
        }
    
        function onSuccess(data)
        {
            if (data == 1)
            {
                window.location.replace("Management Page.aspx");
            }
        }
    
        function onFailed(result)
        {
           return;
        }
    

    C# 方法根据用户名和密码是否正确返回 0 或 1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 1970-01-01
      • 2011-11-28
      • 2016-01-25
      相关资源
      最近更新 更多