Есть кнопка, которая передает данные без AJAX, в то время как другие кнопки отправляют через AJAX в EXT-JS - PullRequest
1 голос
/ 10 июня 2011

У меня есть EXT.formPanel, в которой я хотел бы иметь такое поведение: две кнопки должны отправлять через ajax, а одна - нет.Как это сделать?

Это мой код:

    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);
                }

1 Ответ

1 голос
/ 10 июня 2011

Вот пример:

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);
       }
   });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...