我的代码是:
$('#trainer_registration_form_new').submit(function(){
var email = $('#email').val();
var dataString = 'email='+email;
$.ajax({
type : "get",
url : "checkEmail.php",
data : dataString,
async : false,
dataType : "html",
success : function(result){
if(result==1) {
alert('email alredy exist');
$("input#email").focus();
$('#email').val('');
tempField = $('#email');
setTimeout("tempField.focus();",1);
return false;
} else {
return true;
}
}
});
});
此代码有什么问题,我想在提交表单上查看重复的电子邮件并提交表单。但它没有任何其他想法吗?
答案 0 :(得分:0)
我猜您打算让return false
阻止表单提交?情况并非如此,因为您从false
回调而不是success
回调函数返回submit()
。
相反,你可以考虑在submit()
回调的顶部创建一个布尔变量,并在success
内设置它的值,并在结尾处返回。
所以这是一个粗略的例子:
$('#trainer_registration_form_new').submit(function(){
var $form = $(this);
$.ajax({
// As you were...
success: function(result) {
if(result==1) {
// As you were..
} else {
$form.submit()
}
});
return false;
});
答案 1 :(得分:0)
return
语句位于作为AJAX请求的success
处理程序传递的匿名函数内部,因此只返回该函数的值(无处),而不是从提交处理函数返回。您需要使用变量来存储返回值,并将其设置为该函数内的true
或false
。
理想情况下,您应该避免使用async: false
,因为这样会破坏使用AJAX的整个目的,并会锁定浏览器直到请求完成。
答案 2 :(得分:0)
尝试将dataType : "html",
更改为dataType : "text",
alert(result);
之前 if(result==1) {