Ajax表单发布和验证不起作用

时间:2015-10-12 10:11:44

标签: jquery ajax forms validation

我尝试使用Ajax和jquery表单验证来发布数据,但它在第一次提交函数时不起作用并进行验证。任何解决方案?

$(document).ready(function() {
$("#myForm").validate();
});

(function($){
    function processForm( e ){
        $.ajax({
            url: 'post.php',
            dataType: 'text',
            type: 'post',
            contentType: 'application/x-www-form-urlencoded',
            data: $(this).serialize(),
            success: function( data, textStatus, jQxhr ){
                //$('#response pre').html( data );
                alert('scuss');
            },
            error: function( jqXhr, textStatus, errorThrown ){
                //console.log( errorThrown );
                alert('error');
            }
        });

            e.preventDefault();
    }

$('#myForm').submit(function(e){
e.preventDefault();
if(!$("#myForm").valid()) return; 
$('#myForm').submit( processForm ); 
}); 
})(jQuery);

1 个答案:

答案 0 :(得分:1)

为什么在submit内拨打submit?只需拨打function processForm部分中的else,如下所示:

$('#myForm').submit(function(e){
    e.preventDefault();
    if(!$(this).valid()) 
       return; 
    else
       processForm($(this));
}); 

无需将e传递给您,因为您已经阻止action的默认form,而是通过form本身。

function processForm(form){
     var $this=$(form);//cache the form
     $.ajax({
           url: 'post.php',
           dataType: 'text',
           type: 'post',
           contentType: 'application/x-www-form-urlencoded',
           data: $this.serialize(),
           success: function( data, textStatus, jQxhr ){
                //$('#response pre').html( data );
                alert('scuss');
           },
           error: function( jqXhr, textStatus, errorThrown ){
                //console.log( errorThrown );
                alert('error');
           }
      });
}