ExtJS 4.2.1不使用standardSubmit提交表单

ExtJS 4.2.1不使用standardSubmit提交表单,extjs,extjs4.2,Extjs,Extjs4.2,我正在尝试通过post方法提交表单,该方法使用extjs 4.2.1中的standardSubmit在新窗口中打开url getFields函数中的ext-all-debug.js引发错误 getFields: function() { return this.monitor.getItems(); }, 未捕获的TypeError:无法调用null的方法“getItems” 此处,监视器对象显示为空 单击链接将打开一个包含表单的消息窗口。单击“是”时,必须在打开新窗口的情况下提交表单

我正在尝试通过post方法提交表单,该方法使用extjs 4.2.1中的standardSubmit在新窗口中打开url

getFields函数中的ext-all-debug.js引发错误

getFields: function() {
    return this.monitor.getItems();
},
未捕获的TypeError:无法调用null的方法“getItems”

此处,监视器对象显示为空

单击链接将打开一个包含表单的消息窗口。单击“是”时,必须在打开新窗口的情况下提交表单

我的表格是:

initComponent: function() {
    var me = this;

    Ext.applyIf(me, {
        items: [
        {
            xtype: 'form',
            flex: 1,
            itemId: 'importForm',
            layout: {
                align: 'center',
                type: 'vbox'
            },
            bodyPadding: 20,
            standardSubmit: true,
            items: [
            {
                xtype: 'hiddenfield',
                itemId: 'user_id',
                fieldLabel: 'Label',
                name: 'user_id'
            },
            {
                xtype: 'label',
                itemId: 'formLabel',
                padding: 5,
                text: 'My Label'
            },
            {
                xtype: 'container',
                margin: '10 0 0 0',
                layout: {
                    align: 'middle',
                    pack: 'center',
                    type: 'hbox'
                },
                items: [
                {
                    xtype: 'button',
                    itemId: 'btnImport',
                    margin: '20 0 0 0',
                    width: 75,
                    text: 'Yes'
                },
                {
                    xtype: 'button',
                    cls: 'btn-no',
                    itemId: 'btnCancel',
                    margin: '0 0 0 10',
                    width: 75,
                    text: 'No'
                }]
            }]
        }]
    });
提交表格的代码为:

me.form.getForm().doAction('standardsubmit',{
    target : '_blank',
    method : 'POST',
    standardSubmit:true,
    url : 'http://www.mysite.com'
});
Extjs 4.1.3中的代码完全相同,但在4.2.1中显示错误


这是错误还是我的代码有问题?

找到了错误的原因。表单提交下面的代码有一个关闭窗口的语句,该语句引发了异常

me.form.getForm().doAction('standardsubmit',{
    target : '_blank',
    method : 'POST',
    standardSubmit:true,
    url : 'http://www.mysite.com'
});
me.abstractcomponent.close(); <----- THIS CAUSED THE ERROR

希望它对其他人也有用

找到了错误的原因。表单提交下面的代码有一个关闭窗口的语句,该语句引发了异常

me.form.getForm().doAction('standardsubmit',{
    target : '_blank',
    method : 'POST',
    standardSubmit:true,
    url : 'http://www.mysite.com'
});
me.abstractcomponent.close(); <----- THIS CAUSED THE ERROR

希望它对其他人也有用

这有助于确定问题。问题是表单对象在异步请求启动之前被销毁。处理此问题的更好方法是添加请求处理程序,以便在返回响应后立即销毁表单

form.submit({
    success: function(form, action) {
      yourcomponent.close();//or destroy();
    },
    failure: function(form, action) {
        yourcomponent.close();//or destroy();
    }
});

这有助于确定问题。问题是表单对象在异步请求启动之前被销毁。处理此问题的更好方法是添加请求处理程序,以便在返回响应后立即销毁表单

form.submit({
    success: function(form, action) {
      yourcomponent.close();//or destroy();
    },
    failure: function(form, action) {
        yourcomponent.close();//or destroy();
    }
});

您尝试过常规formPanel.submit方法吗?您尝试过常规formPanel.submit方法吗?