Как вернуть логическое значение из AJAX-запроса ASP.Net Javascript с помощью метода C #? - PullRequest
1 голос
/ 24 сентября 2019

Справочная информация. Я пытаюсь вызвать функцию C # для получения результатов аутентификации по имени пользователя и паролю из кода JavaScript на веб-странице .aspx.

В настоящее время у меня есть следующий запрос 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» в «Management Login Page.aspx»

[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",

Как изменитькод, возвращающий только логическое значение?

Правка - Обновлено в методе bool в методе как строка, оставшаяся после тестирования

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Я нашел другой способ заставить его работать, используя 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 в зависимости от того, правильны ли имя пользователя и пароль.

0 голосов
/ 25 сентября 2019

Это правильно?

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

Я вижу 2 имени пользователя.

Кроме того, данные обычно представляют собой строку:

data: JSON.stringify({ username: "username", username: "password"}),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...