2015-04-03 89 views
1

我有一個定義的表單,用於提交給PHP腳本,該腳本將使用PHPExcel創建一個Excel電子表格。ExtJS5下載Excel文件

Ext.define('Admin.view.main.LedgerParams',{ 
    extend: 'Ext.window.Window', 
    xtype: 'ledgerparams', 
    title: 'Generate Account Ledger',   
    defaultFocus: '[name=period]', 
    layout: 'fit', 
    closable: false, 
    resizable: false, 
    modal : true, 
    standardSubmit: true, 
    items: [{ 
     xtype: 'form',  
     layout: 'fit', 
     fieldDefaults: {labelWidth: 80,labelAlign: 'right'}, 
     padding: 10, 
     items: [{   
      xtype: 'fieldset', 
      padding: 10, 
      title: '<b>Account Ledger Parameters</b>', 
      defaultType: 'numberfield', 
      defaults: {enforceMaxLength: true}, 
      items:[{     
       name: 'period', 
       flex : 1, 
       fieldLabel: 'Fiscal Period', 
       selectOnFocus: true, 
       value: new Date().getFullYear(), 
       minValue: 1980 
      }] 
     }] 
    }], 
    buttons:[{ 
     text: 'Generate', 
     handler: 'onClick_btnLedgerPrint' 
    },{ 
     text: 'Cancel',  
     handler: function(){this.up('window').destroy();} 
    }] 
}); 

的onClick_BtnLedgerPrint方法在主控制器調用的形式提交:

onClick_btnLedgerPrint: function(btn){     
    btn.up('window').down('form').submit({ 
    url: 'app/data/Reports.php', 
     params: {action:'print',reportname:'generate_ledger'} 
    }); 
} 

但是似乎一個JSON響應由所需形式從服務器代替發起下載的。 ExtJS5中的標準提交是否被破解?任何幫助,將不勝感激!

回答

1

JavaScript無法啓動下載,與Ext JS相同。只有瀏覽器這樣做。

var formValues = btn.up('window').down('form').getForm().getValues(); 
var params = { action: 'print', reportname: 'generate_ledger' }; 
var requestParams = Ext.merge(formValues, params); 
var url = 'app/data/Reports.php?' + Ext.Object.toQueryString(requestParams); 
document.location = url; 

或者你可以嘗試使用方法與IFRAME描述here