程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> extjs-用Extjs提交表單後,請求有返回數據,但success函數的action裡取不到返回結果

extjs-用Extjs提交表單後,請求有返回數據,但success函數的action裡取不到返回結果

編輯:編程綜合問答
用Extjs提交表單後,請求有返回數據,但success函數的action裡取不到返回結果
 /**
 * 打開數據項導入窗口
 */
function openDataItemImportWnd() {
    Ext.create('Ext.window.Window', {
        title: '導入數據項',
        autoHeight: true,
        width: 400,
        modal: true,
        layout: 'fit',
        items: {
            xtype: 'form',
            method : 'POST',
            url: "importDataItemStructure.up",
            standardSubmit: false,
            items: [{
                xtype: 'filefield',
                emptyText: '請選擇要上傳的xls文件',
                id: 'filefield_yY71MXsb',
                name: 'fileName',
                allowBlank: "false",
                width: 300,
                hideLabel: 'false',
                labelAlign: 'right'
            }],
            buttons: [{
                text: '導入',
                formBind: true,
                handler: function(button) {
                    Ext.getBody().mask('數據導入中...');

                    // 獲取表單的值
                    var form = button.up('form').getForm();
                    form.submit({
                        success: function(form, action) {
                           console.dir(action);
                           Ext.Msg.alert('Success', action.result.info.message);
                        },
                        failure: function(form, action) {
                           Ext.Msg.alert('Failed', action.result ? action.result.info.message : 'No response');
                        }
                    });

                    Ext.getBody().unmask();
                }
            }, {
                text: '取消',
                handler: function(button) {
                    button.up('window').destroy();
                }
            }]
        }
    }).show();
}

最佳回答:


謝謝大家,讓我排除了很多走彎路的可能。

認真看了下Extjs的API,其中關於文件上傳表單提交的一段:

文件上傳不能用標准“Ajax”技術執行,也就是不能執行XMLHttpRequests。 作為替代,一個隱藏的包含全部域的

元素被暫時創建,並與其target提交設置為指向一個動態生成的, 隱藏的被插入到document,但是在返回數據已經收集後被移除。

請求的返回結果被返回給了那個隱藏的裡的document。
在主頁面中添加這個監聽函數,當上傳完成後,就去裡的document裡去取得返回結果。
Ext.data.Connection.prototype.onUploadComplete=function(frame, options) {
//到Iframe裡去取返回結果。
}

我後台是用的Spring框架,構造好ModelMap,直接由Spring自動返回給頁面的。
按以上思路取到了返回結果。

不過我想,Extjs應該把從iframe裡取結果的邏輯封裝好才是合理的呀。為什麼還要自己手動去寫?
以前沒用過Extjs框架,不知道如果後台不是Spring框架自動返回結果,而是自己直接用response返回結果是不是頁面上就不用自己麻煩去寫取結果的代碼了。這一個待驗證。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved