Почему я не могу войти в систему с использованием c # и mysql в ASP.net

#javascript #c# #html #asp.net

#javascript #c# #HTML #asp.net

Вопрос:

Я новичок в разработке веб-сайта с использованием ASP.Net

Пожалуйста, помогите мне. чтобы я мог продолжить свою карьеру. Заранее спасибо

Я создаю скрипт входа с использованием c # и я хочу вызвать его на javascript.

Но это после того, как я вошел в систему, страница входа будет только обновляться.

И там указано исключение Exception thrown: 'System.InvalidOperationException' in System.Web.Extensions.dll

Итак, вот мой код :

HTML

 <form>
                <div class="form-group">
                  <input type="text" class="form-control material" id="username" placeholder="Username">
                </div>
                <div class="form-group">
                  <input type="password" class="form-control material" id="password" placeholder="Password">
                </div>

                <button type="submit" id="btnLogin" class="btn btn-block btn-info text-uppercase waves">Login</button>

              </form>
  

JAVASCRIPT:

 $(document).ready(function () {
    $("#btnLogin").click(function () {
        var username = $("#username").val();
        var password = $("#password").val();
        AuthenticateUser(username, password)
    });
});

function AuthenticateUser(username, password) {
    var value = "{'email':'"   username
                     "','pass':'"   password
                     "'}";
    $.ajax({
        type: 'POST',
        url: '../WebService/csLogin.asmx/loadEmployeeAccount',
        dataType: 'json',
        data: value,
        contentType: 'application/json; charset=utf-8',
        success: function (response) {
            var cells = eval("("   response.d   ")");
            console.log(cells);
            if (cells.length >= 1) {
                    window.location.href = "index.html";
            } else {
                alert("Invalid Email/Password");
                document.getElementById("username").focus();
            }
        },
        error: function (error) {
            alert(JSON.stringify(error))
        }
    });
}
  

C#:

 [WebMethod]
    public string loadEmployeeAccount(string email, string pass)
    {
        List<Auth> mylist = new List<Auth>();
        using (MySqlConnection connection = new MySqlConnection(connectionString()))
        {
            connection.Open();
            MySqlCommand cmd = new MySqlCommand("SELECT * FROM user WHERE username = @email AND password = @pass", connection);
            cmd.Parameters.Add("@email", MySqlDbType.VarChar).Value = email;
            cmd.Parameters.Add("@pass", MySqlDbType.VarChar).Value = pass;
            cmd.CommandType = CommandType.Text;
            cmd.CommandTimeout = 0;

            MySqlDataReader dr = cmd.ExecuteReader();

            while (dr.Read())
            {
                int user = 0;
                if (dr["userType"].ToString() == "")
                    user = 1;
                else
                    user = Convert.ToInt32(dr["userType"].ToString());
                mylist.Add(new Auth
                {
                    user_id = dr["user_id"].ToString(),
                    username = dr["username"].ToString()
                });
            }
            dr.Close();
            connection.Close();
        }
        JavaScriptSerializer jss = new JavaScriptSerializer();
        string jsn = jss.Serialize(mylist);
        return jsn;
    }
  

И вот изображение на консоли.
введите описание изображения здесь
введите описание изображения здесь
Кто-нибудь может мне помочь с этим?? любая помощь будет высоко оценена. Спасибо

Комментарии:

1. добавьте точку останова в loadEmployeeAccount, чтобы посмотреть, где произошла ошибка, в какой строке.

2. @MohammadAlghanem отладчик не может достичь точки останова.

3. @MohammadAlghanem Пожалуйста, посмотрите 2-е изображение, сэр

4. Ошибка прямо здесь, в 4-й точке веб-страницы с ошибкой. Вы использовали метод POST в запросе страницы, но вам следовало использовать GET

5. @DavideVitali Я уже меняю метод, сэр, но опять ничего не происходит, и он всегда перезагружается, когда я нажимаю кнопку войти

Ответ №1:

Хорошо, для достижения вашей функциональности выполните следующие действия:

В вашем AJAX выполните следующее, чтобы преобразовать вашу value строку в JSON, а затем отправить ее в ваш WebMethod:

 data: {"json": JSON.stringify(value)}
  

Затем украсьте свой класс:

 [System.Web.Script.Services.ScriptService]
  

разрешить запросы POST через AJAX к вашему веб-методу.

И затем в вашем веб-методе выполните следующее, чтобы проанализировать вашу строку JSON, которую вы получили от вашего вызова AJAX:

 [WebMethod]
public string loadEmployeeAccount(string json)
{
dynamic jsondata = serializer.Deserialize(json, typeof(object));
string username = jsondata["email"]; 
string password=jsondata["pass"]

//Your code here
}
  

Ответ №2:

кажется, есть проблема с передачей значения из вызова ajax, пожалуйста, внесите изменения в свою функцию javascript для вызова webmethod

 function AuthenticateUser(username, password) {
    var value = {'email':username,
                 'pass':password};
    $.ajax({
        type: 'POST',
        url: '../WebService/csLogin.asmx/loadEmployeeAccount',
        dataType: 'json',
        data: JSON.stringify(value),
        contentType: 'application/json; charset=utf-8',
        success: function (response) {
            var cells = eval("("   response.d   ")");
            console.log(cells);
            if (cells.length >= 1) {
                    window.location.href = "index.html";
            } else {
                alert("Invalid Email/Password");
                document.getElementById("username").focus();
            }
        },
        error: function (error) {
            alert(JSON.stringify(error))
        }
    });
}
  

Комментарии:

1. Ничего не происходит, сэр.

Ответ №3:

Я не знаком с чистым ASP.NET поскольку я использую MVC, но я предполагаю, что они просто одинаковы под капотом, так что это дикое предположение.

Во-первых, в вашей Ajax-функции вам нужно изменить тип действия с POST на GET , ваша веб-страница с ошибкой явно сообщает вам, что вы не должны отправлять данные через действие POST, в конце концов.

 type: ‘GET
  

Во-вторых, я думаю, что способ, которым вы передаете данные веб-методу, неправильный: вы передаете один буквальный объект, когда ваш метод ожидает две строки. Изменив это, все должно работать так, как ожидалось:

 data: {
    email: username,
    pass: password
}
  

кроме того, удалите dataType: ‘JSON’