【问题标题】:jQuery Ajax form get submitted form as return parameter in case of an errorjQuery Ajax 表单在出错时获取提交的表单作为返回参数
【发布时间】:2018-09-06 18:54:57
【问题描述】:

我使用jQuery Form Plugin 来生成和提交我的Ajax 表单。但是,如果 ajax 调用失败,我想提供重新发送表单的选项,因此构建了一个 displayError() 函数,它将打印网站的顶部栏,其中包含提供的错误和一个提交失败的按钮再次形成。

但是,由于我在这个网站中使用了多个具有相同功能的表单并且显然具有相同的类,我需要告诉 displayError() 函数哪个表单刚刚提交并失败。在 beforeSubmit 或 success 函数中,我有一个所谓的“myform”参数,不幸的是,无论出于何种原因,该参数在错误函数中都不可用。

在ajax调用的错误函数中,是否有可能访问提交的表单的当前DOM对象?

$('.class').ajaxForm({ 
    beforeSubmit: function(data, myForm){

    },
    success: function(responseText, status, xhr, myForm){
        displaySuccess(responseText);
    },
    error: function(xhr, textStatus, errorThrown){
        displayError();
    }
});

这只是我正在使用的代码的简化版本,但应该足以理解问题。非常感谢您!

【问题讨论】:

  • $(this) 我认为
  • stackoverflow.com/questions/1422143/… 显然没有用于错误的表单参数,您不能使用 $(this),但有些人已将变量定义为解决方法。您可以使用 .each 循环遍历所有表单,并在错误处理程序中定义表单元素。

标签: jquery ajax jquery-forms-plugin


【解决方案1】:

正如@sh4dowb 指出的那样,在 .each 函数中运行 ajaxform 实际上是解决此问题的最佳解决方案。以防万一有人遇到同样的问题,我正在回答我自己的问题。

$('.class').each(function(){
    var that=this;
    $(this).ajaxForm({
        beforeSubmit: function(data, myForm){

        },
        success: function(responseText, status, xhr, myForm){
            displaySuccess(responseText);       
        },
        error: function(xhr, textStatus, errorThrown){
            displayError(function(){$(that).submit()});
        }
    });
});

这实际上解决了我的问题。如上所述,这只是完整脚本的简化版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 2020-11-02
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 2014-04-03
    相关资源
    最近更新 更多