ajax后触发两次

时间:2012-01-04 19:54:03

标签: jquery .net asp.net-mvc forms post

在asp.net mvc3应用程序中有一个表单。表格通过jquery帖子发布。以下是相关代码。

                $(this).find('form').live('submit', function () {
                    var request = $.post($(this).attr('action'), $(this).serialize(), function (data) {
                       //do something    
                    });
                    request.fail(function (jqXHR, textStatus) {
                       //do something    
                    });
                    return false;
                });

使用了live(),因为表单是通过ajax加载的,每次通过ajax检索表单时我都不想绑定click事件。

问题是点击提交原因表单要发布两次。在chrome和IE9中测试过,两者都有。

  • 我检查了页面是否包含任何其他表单,但只有一个表单。

  • 我禁用了两个浏览器中的所有扩展程序(firebug可能会导致这种情况)

  • 页面上没有任何资源导致404(即图片)。

那么还有什么可能导致这个问题?

3 个答案:

答案 0 :(得分:1)

我怀疑你正在打赌表格,或两次提交按钮。有bookmarklet称为视觉事件(不是我的)。检查是否是这种情况。正如卡兹所说,没有实际的HTML,可以做的不多。

答案 1 :(得分:0)

没有html标记很难说,也许你有两个嵌套表单?

尝试使用event.stopPropagation或preventDefault:

$(this).find('form').live('submit', function (e) {
        e.stopPropagation();
        e.preventDefault();
        var request = $.post($(this).attr('action'), $(this).serialize(), function (data) {
                    });
        request.fail(function (jqXHR, textStatus) {
                       //do something    
        });
        return false;
});

答案 2 :(得分:0)

这就是为我做的。我有一个Ajax表单,我唯一需要工作的是:

$('#docForm').ajaxForm({

  ...Do Some Mildly Cool Stuff Code...

}).submit(function (e) {
  return false;
}); //Just add the submit to the end.

这就是全部。

希望它有所帮助!