Страница входа с использованием ASP.Net и Ajax - PullRequest
0 голосов
/ 03 апреля 2012

Я пытаюсь создать страницу входа с использованием html, ajax & ASP.NET. Данные действительно передаются в функцию ajax, но когда я отлаживаю страницу asp, имя пользователя и пароль отправляются с NULL.Код должен принимать имя пользователя и пароль, а затем возвращает идентификатор пользователя

HTML-страница:

    <div id="usernameid">Username:</div><input id="username" type="text"/> <span id="username_status"></span>
    <div id="passwordid">Password:</div><input id="password" type="password"/> <span id="password_status"></span>
    <div> <input id="loginbutton" onclick="UserLogin()" type="submit" value="Submit" /></div>

Javascript:

function UserLogin() {
var postData = JSON.stringify({ "username": JSON.stringify($("#username").val()), "password": JSON.stringify($("#password").val()) });
alert(postData);
$.ajax({
    type: "GET",

    url: "http://localhost:49317/LoginPageForLearn.aspx",
    data: postData,
    contentType: "application/json; charset=utf-8",
    dataType: "jsonp",
    jsonp: 'jsoncallback',
    success: callbackfunction,
    error: function (msg) { alert(msg); }
    }); 
    }
    function callbackfunction(datacoming) {
    localStorage["UserID"] = datacoming;
    alert(datacoming);

Страница Asp.net:

protected void Page_Load(object sender, EventArgs e)
    {

        string userName = "";
        int userId = -1;
        string PassWord = "";
        if (Request.QueryString.Count != 0 && Request.QueryString["username"] != string.Empty && Request.QueryString["password"] != string.Empty)
            {
                userName = Request.QueryString["username"];
                PassWord = Request.QueryString["password"];
                userId = GetUserID(userName, PassWord);

            }
    }

У вас есть идеи, почему данные не передаются правильно?Или у вас есть другие идеи о том, как создать страницу входа в систему с помощью html и получить доступ к данным в SQL.

Большое спасибо.

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Вы можете создать PageMethod:

[WebMethod]
public static bool MyMethod(string username, string password)
{
    ...
    return true;
}

, а затем избавиться от двойной строковой JSON и вызвать метод страницы:

var postData = JSON.stringify({ 
    "username": $("#username").val(), 
    "password": $("#password").val() 
});
$.ajax({
    type: "POST",
    url: "LoginPageForLearn.aspx/MyMethod",
    data: postData,
    contentType: "application/json; charset=utf-8",
    success: callbackfunction,
    error: function (msg) { alert(msg); }
}); 

, и в вашем обратном вызове вы можете протестироватьРезультат метода страницы:

function callbackfunction(result) {
    if (result.d) {
        alert('success');
    }
}
0 голосов
/ 03 апреля 2012

Так не работает.Вы также должны вернуть что-то, чтобы уведомить клиента о том, что аутентификация прошла успешно или не удалась.Вы должны подумать о программном рабочем процессе.

Вы можете создать статический метод на вызываемой странице, который возвращает значение в форме Bool или JSON.Что-то вроде этого:

[WebMethod] 
[ScriptMethod(UseHttpGet = true)]
public static bool Authenticate JsonMethod(int username, string password)
{ 
   bool isAuthenticated = // some method to authenticate
   return isAuthenticated;
}

Ваш AJAX будет выглядеть примерно так:

$.ajax({
    type: "GET",
    url: "http://localhost:49317/LoginPageForLearn.aspx/Authenticate",
    data: postData,
    contentType: "application/json; charset=utf-8",
    dataType: "jsonp"
}); 

В случае вашего успеха или неудачи перезвоните, оттуда вы оцените то, что хотитеделать с возвращаемым значением.

В любом случае обработчик, вероятно, будет лучше, поскольку он не содержит ненужной разметки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...