Ответ 1
Почему бы не обработать ошибку в вызове?
то есть.
$.ajax({
type: 'POST',
url: 'loginCheck',
data: $(formLogin).serialize(),
dataType: 'json',
error: function(req, err){ console.log('my message' + err); }
});
У меня есть следующая функция в коде jQuery:
btnLogin.on('click', function(e,errorMessage){
console.log('my message' + errorMessage);
e.preventDefault();
return $.ajax({
type: 'POST',
url: 'loginCheck',
data: $(formLogin).serialize(),
dataType: 'json'
}).promise();
console.log('my message' + errorMessage);
});
ЧТО Я ПЫТАЮСЬ ДЕЛАТЬ: Я пытаюсь console.log сообщение об ошибке. Я получаю undefined, если строка console.log находится выше функции ajax, и ничего, если console.log ниже ее.
Может ли кто-нибудь сказать мне, как получить значение errorMessage, отображаемого в этой или другой новой функции?
Кроме того, любая ссылка с использованием Ajax для проверки формы входа php будет глубоко оценена
Привет, Зоран
Почему бы не обработать ошибку в вызове?
то есть.
$.ajax({
type: 'POST',
url: 'loginCheck',
data: $(formLogin).serialize(),
dataType: 'json',
error: function(req, err){ console.log('my message' + err); }
});
Вы можете попробовать что-то вроде этого (скопировано из примеры jQuery Ajax)
var request = $.ajax({
url: "script.php",
type: "POST",
data: {id : menuId},
dataType: "html"
});
request.done(function(msg) {
console.log( msg );
});
request.fail(function(jqXHR, textStatus) {
console.log( "Request failed: " + textStatus );
});
Проблема с вашим исходным кодом заключается в том, что аргумент ошибки, который вы передаете в свою функцию on, фактически не приходит нигде. JQuery on не возвращает второй аргумент, и даже если бы это произошло, это касалось события click, а не вызова Ajax.
Обработчик ошибок вызова Ajax будет запущен, если сам вызов не будет выполнен.
Вероятно, вы пытаетесь получить сообщение об ошибке с сервера, если учетные данные для входа не пройдут. В этом случае вам нужно проверить объект json ответа сервера и отобразить соответствующее сообщение.
e.preventDefault();
$.ajax(
{
type: 'POST',
url: requestURI,
data: $(formLogin).serialize(),
dataType: 'json',
success: function(result){
if(result.hasError == true)
{
if(result.error_code == 'AUTH_FAILURE')
{
//wrong password
console.log('Recieved authentication error');
$('#login_errors_auth').fadeIn();
}
else
{
//generic error here
$('#login_errors_unknown').fadeIn();
}
}
}
});
Здесь "результат" - это объект json, возвращаемый с сервера, который может иметь такую структуру, как:
$return = array(
'hasError' => !$validPassword,
'error_code' => 'AUTH_FAILURE'
);
die(jsonEncode($return));
$.ajax({
type: 'POST',
url: 'loginCheck',
data: $(formLogin).serialize(),
success: function(result){
console.log('my message' + result);
}
});
Если вы хотите проверить свой URL. Я полагаю, вы используете Chrome. Вы можете перейти на консоль хром, а URL будет отображаться в разделе "Окончательная загрузка XHR:"
В Chrome щелкните правой кнопкой мыши на консоли и отметьте "сохранить журнал навигации".