【发布时间】:2015-02-26 14:17:50
【问题描述】:
我有简单的注册表单。 Ajax 和表单工作正常,但无法通过变量连接它们,我的意思是当 ajax 检查电子邮件是否在数据库寄存器中时,应该通过变量 error 停止,但它不是。
代码:
$('.login').submit(function(e) {
e.preventDefault();
var error = 0;
var self = $(this);
var $name = self.find('[type=name]');
var $email = self.find('[type=email]');
var $pass = self.find('[type=password]');
//MY AJAX
var email = $email.val();
$.ajax({
url: 'http://localhost/FPD/nowe/inc/rejestracja.php?action=emailcheck',
data: {
'email': email
},
type: 'POST',
success: function(odp) {
if (odp == 1) {
createErrTult("Błąd! taki email już istnieje w bazie!", $email)
//THAT ERROR VARIABLE DOESNT WORK OUTSIDE AJAX FUNCTION
error++;
}
},
error: function(xhr, textStatus, error) // THOSE ROWS
{
alert(error);
}
});
if (error!=0)return;
//THAT STILL WORKS EVEN AJAX ERROR
self.find('[type=submit]').attr('disabled', 'disabled');
self.children().fadeOut(300,function(){ $(this).remove() })
$('<p class="login__title">sign in <br><span class="login-edition">welcome to A.Movie</span></p><p class="success">You have successfully<br> signed in!</p>').appendTo(self)
.hide().delay(300).fadeIn();
// var formInput = self.serialize();
// $.post(self.attr('action'),formInput, function(data){}); // end post
}); // end submit
【问题讨论】:
-
检查一下,这将是你的问题:stackoverflow.com/questions/5976142/… Ajax 是异步的,所以我想,你想稍后使用它
-
你应该全局声明错误变量。
-
AJAX(Asynchronous) 不会等到您从服务器收到某些东西。由于它是异步的,因此您的
error变量为零并且该过程继续进行。在ajax调用中使用async: false使其同步。
标签: javascript jquery ajax