#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’