Как результат console.log этого вызова ajax?

У меня есть следующая функция в коде 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 будет глубоко оценена

Привет, Зоран

Ответы

Ответ 1

Почему бы не обработать ошибку в вызове?

то есть.

$.ajax({
    type: 'POST',
    url: 'loginCheck',
    data: $(formLogin).serialize(),
    dataType: 'json',
    error: function(req, err){ console.log('my message' + err); }
});

Ответ 2

Вы можете попробовать что-то вроде этого (скопировано из примеры 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.

Ответ 3

Обработчик ошибок вызова 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));

Ответ 4

$.ajax({
    type: 'POST',
    url: 'loginCheck',
    data: $(formLogin).serialize(),    
    success: function(result){
                console.log('my message' + result);
             }
});

Ответ 5

Если вы хотите проверить свой URL. Я полагаю, вы используете Chrome. Вы можете перейти на консоль хром, а URL будет отображаться в разделе "Окончательная загрузка XHR:"

Ответ 6

В Chrome щелкните правой кнопкой мыши на консоли и отметьте "сохранить журнал навигации".