2011-06-10 42 views
1

提交我有一個EXT.formPanel中,我想有這樣的beahaviour:兩個按鈕應該通過Ajax提交和一個不應該。這個怎麼做?有一個按鈕,如果沒有AJAX提交數據,而其他按鈕通過AJAX在EXT-JS

這是我的代碼:

form = new Ext.FormPanel({ 
     frame:true, 
     width:Ext.crl.styles.formWidth, 
     title: 'Ricerca Atti', 
     bodyStyle:'padding:5px 5px 0', 
     defaultType: 'textfield', 
     formId:'search-form', 
     keys: [ 
      { key: [Ext.EventObject.ENTER], handler: function(){ 
        ds.baseParams = form.getForm().getValues(); 
        form.getForm().submit({url:urlRicerca, 
         waitMsg:'Ricerca in corso…', submitEmptyText: false, method:'GET',params: { start: 0, limit: PAGE_SIZE}, 
         success:function(form,action) {Ext.crl.utils.searchOnSuccess(ds, action, grid); } 
        }); 
      } 
      } 
     ], 
     items: [ 
      ricercaSemplice, 
      ricercaAvanzata, 
      { //This button should submit NOT submit through AJAX!!! 
       text: 'Esporta Elenco', 
       disabled:false, 
       style: 'float:right;', 
       xtype: 'button', 
       handler: function() { 
        ds.baseParams = form.getForm().getValues(); 
        form.getForm().submit({url:urlRicerca+".xls", 
         waitMsg:'Ricerca in corso…', submitEmptyText: false, method:'GET',params: { enableCsvFilter: "yes", start: 0, limit: PAGE_SIZE}, 
         success:function(form,action) {console.log(action); } 
        }); 
       } 
      },{ 
       text: 'Reimposta', 
       xtype: 'button', 
       style: 'float:right;margin-right:10px', 
       disabled: false, 
       handler: function() { 
        form.getForm().reset(); 
        //window.location.href = window.location.href; 
       } 
      },{ 
       id: 'bottoreCercaRicerca', 
       name: 'bottoreCercaRicerca', 
       text: 'Cerca', 
       xtype: 'button', 
       style: 'float:right;margin-right:10px', 
       disabled: false, 
       handler: function() { 
        ds.baseParams = form.getForm().getValues(); 
        form.getForm().submit({url:urlRicerca, 
         waitMsg:'Ricerca in corso…', submitEmptyText: false, method:'GET',params: { start: 0, limit: PAGE_SIZE}, 
         success:function(form,action) {Ext.crl.utils.searchOnSuccess(ds, action, grid); } 
        }); 
       } 
      },{ 
       name: 'buttonSwitchRicerca', 
       xtype: 'button', 
       style: 'margin-bottom:10px', 
       text: 'Ricerca Avanzata', 
       handler: function() { 
        if(ricercaAvanzata.hidden) { 
         this.setText('Ricerca Standard'); 
         ricercaAvanzata.show(); 
        } 
        else { 
         this.setText('Ricerca Avanzata'); 
         ricercaAvanzata.hide(); 
        } 
       } 
      }, 
      DEFAULT_SPACER, 
      Ext.crl.modalitaLavoro.comboModalitalavoro 
     ] 
    }); 

心中已經寫在那裏的按鈕不應該使用AJAX評論。

編輯 - 我已經找到了解決辦法,這是通過AJAX不提交作品的處理程序(實際上,在新窗口中打開的事實是我想要的東西)我需要什麼。還有其他選擇嗎?

   handler: function() { 
        query = form.getForm().getValues(true); 
        query += "&enableCsvFilter=yes"; 
        var url = urlRicerca + ".xls?" + query; 
        window.open(url); 
       } 
+0

是的,但你的評論是在西班牙語或意大利語......不是每個人都可以把它理解 – 2011-06-10 12:50:12

+0

的註釋//此按鈕應提出不通過AJAX提交! !我會帶走其他評論 – 2011-06-10 12:53:00

回答

1

下面是一個例子:

var ajaxButton1 = new Ext.Button({text:'ajaxButton1 ', handler:ajaxButton1Function}); 
var ajaxButton2 = new Ext.Button({text:'ajaxButton2 ', handler:ajaxButton2Function}); 
var noAjaxButton = new Ext.Button({text:'noAjaxButton ', handler:noAjaxButtonFunction}); 
function ajaxButton1Function(){ 
    Ext.Ajax.Request({ 
     url: 'your url', // you can fix a parameter like this : url?action=anAction1 
     method: 'POST', 
     params: { 
      myField1: myField1.getValue() 
      // all your params.... 
     }, 
     success: function (result, request){ 
      alert('Succesfully added ' + result.responseText); 
     }, 
     failure: function (result, request){ 
      alert('Error in server' + result.responseText); 
     } 
    }); 
} 


function ajaxButton2Function(){ 
    Ext.Ajax.Request({ 
     url: 'your url', // you can fix a parameter like this : url?action=anAction2 
     method: 'POST', 
     params: { 
      myField1: myField1.getValue() 
      // all your params.... 
     } 
     success: function (result, request){ 
      alert('Succesfully added ' + result.responseText); 
     }, 
     failure: function (result, request){ 
      alert('Error in server' + result.responseText); 
     } 
    }); 
} 

function noAjaxButtonFunction(){ 
    form.submit({ 
     success: function(form, action) { 
      Ext.Msg.alert('Success', action.result.msg); 
     }, 
     failure: function(form, action) { 
      Ext.Msg.alert('Failed', action.result.msg); 
     } 
    }); 
} 
+0

我想要兩個按鈕上的AJAX和另一個正常的瀏覽器同步請求 – 2011-06-10 12:57:30

+0

我編輯它並給了你一個例子 – 2011-06-10 13:10:14