表单未返回true或false它采用true default

时间:2013-02-21 09:46:51

标签: jquery ajax form-submit

我的代码是:

$('#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;
                    }
                }
            });
     });

此代码有什么问题,我想在提交表单上查看重复的电子邮件并提交表单。但它没有任何其他想法吗?

3 个答案:

答案 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处理程序传递的匿名函数内部,因此只返回该函数的值(无处),而不是从提交处理函数返回。您需要使用变量来存储返回值,并将其设置为该函数内的truefalse

理想情况下,您应该避免使用async: false,因为这样会破坏使用AJAX的整个目的,并会锁定浏览器直到请求完成。

答案 2 :(得分:0)

尝试将dataType : "html",更改为dataType : "text",

alert(result);

之前

if(result==1) {