2016-09-23 159 views
0

我想提交我的联系表单使用AJAX与jQuery验证。我认为传球数据存在错误。验证工作正常,但AJAX无法解决问题。请在下面查看我的代码并帮助我理清它。ajax表单提交与jQuery验证

$(document).ready(function(){ 
    $('#test-form').validate({ 
     rules: { 
      name:{ 
       required: true, 
      }, 
      org: { 
       required: true, 
      }, 
      email: { 
       required: true, 
       email:true, 
       maxlength: 50, 
      }, 
      phone:{ 
       number:true 
      }, 
      message:{ 
       required: true, 
      } 
     }, 
     messages: { 
      name: { 
       required:"Enter Your Name", 
      }, 
      org: { 
       required:"Enter Your Organisation", 
      }, 
      email: { 
       required: "Enter Your Email Address", 
       email: "Enter correct email format", 
      }, 
      phone:{ 
       number : "Phone number must contain digits only", 
      }, 
      message:{ 
       required: "Enter Your Message", 
      } 
     }, 
     submitHandler: function(form, e) { 
      e.preventDefault(); 
      alert('three'); 

      var This = $(this); 
      var action = $(This).attr('action'); 
      var data_value = unescape($(This).serialize()); 

      $.ajax({ 
       type: "POST", 
       url: action, 
       data: data_value, 
       success: function(response) { 
        $('#ajax_contact_msg').html(response); 
       }    
      }); 
      return false; 
     } 
    }); 
}); 
+0

检查您的控制台是否有错误。你发送的data_value的值是多少?另外请注意,不需要将'This'放在jQuery对象中 - 它已经是一个 –

回答

0

而不是使用submitHandler事件中使用JQuery验证的.valid()功能。只有当所有表单字段符合验证时才允许ajax调用。

请检查以下代码。

$(document).ready(function(){ 
    $('#test-form').validate({ 

    rules: { 
     name:{ 
     required: true, 
     }, 

     org:{ 
     required: true, 
     }, 

     email:{ 
     required: true, 
     email:true, 
     maxlength: 50, 

     }, 
     phone:{ 
     number:true 
     }, 
     message:{ 
     required: true, 
     } 


    }, 
    messages: { 
     name: { 
     required:"Enter Your Name", 
     }, 

     org: { 
     required:"Enter Your Organisation", 
     }, 

     email: { 
     required: "Enter Your Email Address", 
     email: "Enter correct email format", 
     }, 
     phone:{ 

     number : "Phone number must contain digits only", 
     }, 
     message:{ 
     required: "Enter Your Message", 
     } 

    } 
    }); 
}); 

if($('#test-form').valid()){ 
    alert('three'); 

    var This = $(this); 

    var action = $(This).attr('action'); 
    var data_value = unescape($(This).serialize()); 
    $.ajax({ 
    type: "POST", 
    url:action, 
    data: data_value, 

    success: function(response) { 
     $('#ajax_contact_msg').html(response); 
    }    
    }); 
    return false; 
} 
+0

这意味着标准表单提交仍然会发生,因此AJAX请求将无法正确完成。使用'submitHandler'是正确的方法。 –