Extjs 在EXT-JS中,有一个按钮可以在不使用AJAX的情况下提交数据,而其他按钮则通过AJAX提交数据

Extjs 在EXT-JS中,有一个按钮可以在不使用AJAX的情况下提交数据,而其他按钮则通过AJAX提交数据,extjs,Extjs,我有一个EXT.formPanel,我希望在其中有这样的行为:两个按钮应该通过ajax提交,一个不应该。如何做到这一点 这是我的代码: form = new Ext.FormPanel({ frame:true, width:Ext.crl.styles.formWidth, title: 'Ricerca Atti', bodyStyle:'padding:5px 5px 0', defaultType:

我有一个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);
                }
以下是一个例子:

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);
       }
   });
}
以下是一个例子:

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

是的,但你的评论是用西班牙语或意大利语。。。不是每个人都能理解它的评论是//这个按钮应该提交,而不是通过AJAX提交!!!我会删除其他评论,但你的评论是西班牙语或意大利语。。。不是每个人都能理解它的评论是//这个按钮应该提交,而不是通过AJAX提交!!!我将删除其他注释。我希望两个按钮上有AJAX,另一个按钮上有普通浏览器同步请求。我希望两个按钮上有AJAX,另一个按钮上有普通浏览器同步请求