我在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登录表单的链接都将深受赞赏
的问候,卓然
答案 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中,右键单击控制台,然后选中“保留登录导航'”。