Submit form via AJAX in jQuery

前端 未结 2 434
误落风尘
误落风尘 2020-12-09 16:47

I am using following jQuery code to submit a form via AJAX.

jQuery(\'form.AjaxForm\').submit( function() {            
        $.ajax({
            url     :         


        
相关标签:
2条回答
  • 2020-12-09 17:10

    You can't attach handlers directly to html that doesn't exist

    There are 2 ways to handle it.

    Bind the handlers within success callback of ajax.

        $(formParentSelector).load(formFileUrl, function() {
            /* within this success callback the new html exists and can run code*/
            AjaxForm();
        });
    
    function    AjaxForm(){
        jQuery('form.AjaxForm').submit( function() {            
            $.ajax({
                url     : $(this).attr('action'),
                type    : $(this).attr('method'),
                dataType: 'json',
                data    : $(this).serialize(),
                success : function( data ) {
                            alert('Submitted');
                          },
                error   : function( xhr, err ) {
                            alert('Error');     
                          }
            });    
    
                                                 })
     }
    

    The other way is to delegate the handler to a higher level in the document so it is avalibale for future matching elements

     jQuery(document).on('submit','form.AjaxForm').submit( function() {            
            $.ajax({
                url     : $(this).attr('action'),
                type    : $(this).attr('method'),
                dataType: 'json',
                data    : $(this).serialize(),
                success : function( data ) {
                            alert('Submitted');
                          },
                error   : function( xhr, err ) {
                            alert('Error');     
                          }
            });    
    
                                                 })
    
    0 讨论(0)
  • 2020-12-09 17:15

    If using jQuery 1.7+ you could try using .on() to delegate the event and bind to all future forms with the same class. Try finding the closest parent that is not inserted dynamicly instead of $(document).

    $(document).on('submit', 'form.AjaxForm', function() {            
            $.ajax({
                url     : $(this).attr('action'),
                type    : $(this).attr('method'),
                dataType: 'json',
                data    : $(this).serialize(),
                success : function( data ) {
                             alert('Submitted');
                },
                error   : function( xhr, err ) {
                             alert('Error');     
                }
            });    
            return false;
        });
    
    0 讨论(0)
提交回复
热议问题