Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript extjs4:如何两次提交相同的表单数据_Javascript_Forms_Servlets_Extjs_Extjs4 - Fatal编程技术网

Javascript extjs4:如何两次提交相同的表单数据

Javascript extjs4:如何两次提交相同的表单数据,javascript,forms,servlets,extjs,extjs4,Javascript,Forms,Servlets,Extjs,Extjs4,我有一个带有两个按钮的输入表单,提交和保存。最初,两个按钮都将被禁用。一旦用户输入数据,submit按钮将被启用,他将提交表单,表单将转到servlet进行验证(通过验证,我的意思是发送用户ID和密码以检查数据库中是否存在该表单) 这是我的提交按钮处理程序: validateForm: function(button){ console.log('Validatingform'); var formData=button.up('form').getForm();

我有一个带有两个按钮的输入表单,提交和保存。最初,两个按钮都将被禁用。一旦用户输入数据,submit按钮将被启用,他将提交表单,表单将转到servlet进行验证(通过验证,我的意思是发送用户ID和密码以检查数据库中是否存在该表单)

这是我的提交按钮处理程序:

validateForm: function(button){
        console.log('Validatingform');
        var formData=button.up('form').getForm();
        if(formData.isValid()){
            Ext.Ajax.request({
                url : 'MyServlet',
                params : {
                    inputData:Ext.encode(formData.getValues()),
                    validate:"valid"
                },
                scope : this,
                success : this.onValid,
                failure : this.onInvalid
            });
        }
    },

onValid: function(response,button){
        console.log("Valid");
        //on valid-enable save button,disable submit button
        Ext.getCmp('myFormSubmit').setDisabled(true);
        Ext.getCmp('myFormSave').enable();

    },
在检查验证之后。在OnValid方法中,我启用save按钮,然后单击save按钮立即保存表单数据

但是,由于表单已经提交,我的servlet的输入是“null”

我不确定如何保存用户多次提交时输入的表单数据。有谁能指导我解决这个问题吗


提前感谢

在按钮/表单上保存数据是否合适?也许不是最好的主意,但这是一个想法

    validateForm: function(button){
    console.log('Validatingform');
    var formData=button.up('form').getForm();
    if(formData.isValid()){
        //
        if (!button.savedData){
            button.savedData = formdata;    
        }

        //
        Ext.Ajax.request({
            url : 'MyServlet',
            params : {
                inputData:Ext.encode(formData.getValues()),
                validate:"valid"
            },
            scope : this,
            success : this.onValid,
            failure : this.onInvalid
        });
    }
},

onValid: function(response,button){
    console.log("Valid");
    var submitBtn = Ext.getCmp('myFormSubmit');
//on valid-enable save button,disable submit button
    submitBtn.setDisabled(true);
    Ext.getCmp('myFormSave').enable();
    if (submitBtn && submitBtn.savedData){
        formdata = submitBtn.savedData;
        delete submitBtn.savedData;
   }
//
},

onInvalid: function(response,button){
    var submitBtn = Ext.getCmp('myFormSubmit');
    if (submitBtn && submitBtn.savedData){
        formdata = submitBtn.savedData;
        delete submitBtn.savedData;
     }
}

您是否在用户点击“提交”按钮后禁用表单项?否。我只是禁用了“提交”按钮。当然,我会尝试。如果你能更清楚地说出你的想法,那将非常有帮助。我发布的代码检查submit按钮是否保存了任何数据,如果没有,则将formdata保存在按钮的属性savedData中(这不是本机属性,但Ext允许你添加这些属性);然后,当调用onValid函数时,它获取submit按钮引用,并检查该按钮是否具有名为savedData的属性。如果是这样,它将从此属性创建一个名为formData的新变量,此变量可用于新提交等。之后,它从按钮中删除该属性,以允许使用不同信息进行新提交。onInvalid也会清除此属性,只是为了确保流中没有旧数据。好的,非常感谢。我知道了。我现在就去试试