Я немного начинаю, когда дело доходит до звонков AJAX, так извиняюсь заранее, потому что я застрял, и я понятия не имею, почему !Успех AJAX: функция всегда возвращает успех (и код состояния 200), функция ошибки не запускается
Таким образом, у меня есть собственный сервер, на котором отображается страница входа в систему. Используя маршрутизатор, я определяю, правильно ли введены данные в форме для пользователя, чтобы перейти на домашнюю страницу. Моя кнопка входа в систему также связана с AJAX, в которой я добавляю обработчик событий, который на данный момент [должен] отображать окна предупреждений на основе результатов проверки в маршрутизаторе.
Итак, моя проблема показывает правильные поля для каждого ответа. Поле предупреждения «Успешное» всегда отображается, как и код состояния 200. Код ошибки: функция даже не достигнута.
У меня есть файл-маршрутизатор, который обслуживает страницы и обрабатывает журнал регистрации, файл js, содержащий правильные комбинации учетных данных входа в систему, страницу входа в систему html и файл входа в систему js. Я использую javascript и AJAX и google chrome для отладки. Некоторый код, который, я думаю, вам понадобится для этого вопроса, приведен ниже. Спросите, требуется ли вам больше.
Войти регистрация на маршрутизаторе:
app.post('/api/login/', function (req, res) {
console.log(req.body);
var emailLog = req.body.email;
var passwordLog = req.body.password;
validUser = false;
// Search user data
for (var x in USERS.users) {
if (emailLog === USERS.users[x].email && passwordLog === USERS.users[x].password) {
validUser = true;
break;
}
}
if (validUser === true) {
console.log("Log in successful");
res.send('Success');
} else {
console.log("Incorrect combination");
res.send('Error');
}
});
Login.js Этот файл реализует материал AJAX:
$(document).ready(function(){
console.log("in doc ready");
$("#submit_button").click(function(e){
console.log("in event handler");
e.preventDefault();
$.ajax({type: "POST",
url: "/api/login",
data: { email: $("#email").val(),password: $("#password").val() },
success:function(data, textStatus, xhr){
alert("Successful");
console.log(xhr.status);
console.log(data);
},
error:function(data){
alert("Unsuccessful");
//$("#errorMessage").html("Incorrect email or password - Try again");
}
});
});
});
Помощь! Я просмотрел несколько страниц вопросов AJAX здесь, и никто из них не работал для меня. В конечном итоге я хотел бы добавить текст ошибки в div на странице входа в систему, но пока я буду счастлив, просто показывая правильное предупреждение !!! ... Почему он всегда возвращает окно предупреждения о успехе, даже если я ввожу неправильную комбинацию? Любые предложения или указатели для правильного направления для исправления этой ошибки?
Update Это то, что показывает в консоли от инструментов разработчика, как для правильного сочетания и неправильной комбинации:
login.js:2 in doc ready
login.js:5 in event handler
login.js:18 200
login.js:20 Success
login.js:5 in event handler
login.js:18 200
login.js:20 Error
И это в CMD окно:
Example app listening at http://:::3000
{ email: '[email protected]', password: 'a' }
[email protected]
a
Valid user : true
Log in successful
{ email: '[email protected]', password: 't' }
[email protected]
t
Valid user : false
Incorrect log in combination - re-directing back to login page
Благодарим вас за это разъяснение. Я не читал это в документации ajax ... Я, должно быть, пропустил это, не понимая! Я добавил, что это работает! Для добавления окна предупреждения об ошибке мне нужно использовать функцию error: function() или я могу просто использовать оператор else поверх этого if? – hturner