首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在jQuery中通过AJAX提交表单

在jQuery中通过AJAX提交表单
EN

Stack Overflow用户
提问于 2012-03-05 02:46:49
回答 2查看 39.8K关注 0票数 21

我使用以下jQuery代码通过AJAX提交表单。

代码语言:javascript
复制
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);     
                      }
        });    
        return false;
    });

代码在没有ajax的情况下工作得很好。,但如果我通过ajax加载表单,则不起作用。我认为这是因为在JavaScript加载之后通过ajax加载表单。

有什么解决方案吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-05 02:51:10

如果使用jQuery 1.7+,您可以尝试使用.on()来委托事件并绑定到具有相同类的所有将来的表单。尝试查找不是动态插入的最接近的父级,而不是$(文档)。

代码语言:javascript
复制
$(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;
    });
票数 43
EN

Stack Overflow用户

发布于 2012-03-05 02:58:15

您不能将处理程序直接附加到不存在的html

有两种方法可以处理它。

在ajax的成功回调中绑定处理程序。

代码语言:javascript
复制
    $(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');     
                      }
        });    

                                             })
 }

另一种方法是将处理程序委托给文档中的更高级别,以便将来匹配的元素可以使用

代码语言:javascript
复制
 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');     
                      }
        });    

                                             })
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9557761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档