1

extjs 4.2.1 の standardSubmit を使用して、新しいウィンドウで URL を開くポスト メソッドを介してフォームを送信しようとしています。

getFields 関数の ext-all-debug.js によってエラーがスローされる

getFields: function() {
    return this.monitor.getItems();
},

キャッチされていない TypeError: null のメソッド 'getItems' を呼び出せません

ここでは、監視オブジェクトが null として表示されています。

リンクをクリックすると、フォームを含むメッセージ ウィンドウが開きます。「はい」をクリックすると、新しいウィンドウを開いた状態でフォームを送信する必要があります。

私のフォームは:

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 ではエラーが表示されます

これはバグですか、それとも私のコードに何か問題がありますか???

4

2 に答える 2

3

これは、問題を特定するのに役立ちました。問題は、非同期リクエストが開始される前にフォーム オブジェクトが破棄されることです。この問題を処理するより良い方法は、リクエスト ハンドラーを追加して、レスポンスが返されるとすぐにフォームを破棄できるようにすることです。

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

http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.form.Basic

于 2013-09-06T03:09:46.490 に答える