如何在这个ajax调用的console.log结果?

时间:2012-08-19 10:27:22

标签: jquery 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错误消息。如果console.log行在ajax函数之上,我将得到未定义,如果console.log低于它,则没有任何内容。

有谁能告诉我如何获得在这个或另一个新函数中显示的errorMessage的值?

此外,任何关于使用Ajax检查php登录表单的链接都将深受赞赏

的问候,卓然

7 个答案:

答案 0 :(得分:11)

为什么不在通话中处理错误?

即。

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

答案 1 :(得分:5)

您可以尝试这样的事情(从the jQuery Ajax examples复制)

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调用。

答案 2 :(得分:1)

如果调用本身失败,将触发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();
            }
        }
    }
});

这里,“result”是从服务器返回的json对象,它可以具有如下结构:

$return = array(
        'hasError' => !$validPassword,
        'error_code' => 'AUTH_FAILURE'
);
die(jsonEncode($return));

答案 3 :(得分:1)

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

答案 4 :(得分:1)

尝试这样的事情:

$.ajax({
            type: 'POST',
            url: 'loginCheck',
            data: $(formLogin).serialize(),
            dataType: 'json',
            success: function (textStatus, status) {
                    console.log(textStatus);
                    console.log(status);
                   },
            error: function(xhr, textStatus, error) {
                    console.log(xhr.responseText);
                    console.log(xhr.statusText);
                    console.log(textStatus);
                    console.log(error);

                  }
});

答案 5 :(得分:0)

如果您想查看自己的网址。我想你正在使用Chrome。您可以转到chrome控制台,URL将显示在“XHR finished loading:”

答案 6 :(得分:-1)

在Chrome中,右键单击控制台,然后选中“保留登录导航'”。