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

我在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登录表单的链接都将深受赞赏

问候,卓然

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

 $.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调用error handling程序。

您可能正试图从服务器获取错误,以防登录凭据无法通过。 在这种情况下,您需要检查服务器响应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)); 
 $.ajax({ type: 'POST', url: 'loginCheck', data: $(formLogin).serialize(), success: function(result){ console.log('my message' + result); } }); 

尝试这样的事情:

 $.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); } }); 

如果您想检查您的url。 我想你正在使用Chrome。 您可以转到chrome控制台,URL将显示在“XHR完成加载:”下

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