2013-08-06 22 views
2

通常使用form.submit({...})將ExtJS表單發佈到後端。我想現在提交表單提交同步,所以我切換到使用Ext.Ajax.request({async: false, ...})。的Ext.Ajax.request()表單屬性通常看起來像這樣:還有什麼我可以傳遞給Ext.Ajax.request的`form`屬性?

Ext.Ajax.request({ 
    url: 'formsubmit', 
    form: 'formid', 
    method:'POST', 
    success: function(response, opts) { 
     alert("successfull"); 
    }, 
    failure:function(res,opt) { 
     alert("request failed"); 
    } 
}); 

我處理一堆匿名形式現在。有沒有辦法解決?

給定一個var form = {xtype: 'form', items: [...]} 我試着form.getEl()form.getForm()form.getForm().getFieldValues()所有不工作更換'formid'

除了將生成的ID分配給每個匿名錶單之外,沒有其他解決方法了。



感謝任何輸入

+0

爲什麼不看'Ext.Ajax.request'做什麼來序列化表單呢? –

回答

1

它看起來像ExtJS的形式不實際使用的標記表單元素。在ExtJS表單上調用提交函數時,將HTML表單元素作爲過程的一部分進行製作,並且這是用於提交的表單。

http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.form.action.Submit-method-buildForm

理想情況下,你可以修改在調用doSubmit函數內的Ajax請求所使用的選項。既然你不行,你可能會考慮重寫Ext.form.action.Submit,這樣你就可以調用你在問題中提到的form.submit()函數。

http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.form.action.Submit-method-doSubmit

+0

我結束了剛剛使用form.submit(),並把我的代碼,需要在一個回調中的一系列AJAX調用後運行,並附帶條件包裹了我的代碼。 – Meredith

2

看起來你可能只是這樣做作爲替代form屬性:

var form = this.down('form'); 
Ext.Ajax.request({ 
    url: 'test.xyz', 
    params: form.getValues() 
    // etc... 
}); 

getValues給你你需要爲你提交名稱/值對。

相關問題