API解釋說您必須通過success: true
才能調用成功處理程序。這是submit
方法該文檔
@param {對象}選項 的選項傳遞給動作(見Ext.form.Basic.submit和Ext.form.Basic.doAction的詳細信息)
if (form.isValid()) {
// Submit the Ajax request and handle the response
form.submit({
success: function(form, action) {
Ext.Msg.alert('Success', action.result.message);
},
// If you don't pass success:true, it will always go here
failure: function(form, action) {
Ext.Msg.alert('Failed', action.result ? action.result.message : 'No response');
}
});
}
如果要使用不同的屬性來指示錯誤,你應該看看http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.form.Basic-cfg-errorReader,您可以配置errorReader閱讀你的財產,你想。
您可以路由你都成功和失敗處理到同一個地方,做從處理程序確定它
一定要設置standardSubmit:true
所以它不會與AJAX提交
樣品溶液這將使你的代碼感覺有點不太髒
Ext.define('ns.my.CustomReader', {
extend: 'Ext.data.reader.Reader',
alias: 'reader.ns-customreader',
read: function(xhr)
var resp = Ext.JSON.decode(response.responseText, true);
// Handle the case where response is not JSON too (unhandled server errror?)
return {success: resp ? !!resp.id : false};
}
});
然後,當您創建表單,你可以只使用
form : {
errorReader: 'ns-customreader'
}
我也注意到,你沒有返回記錄,讀者應該根據文檔來做,它可能是你不需要它,但它會很高興滿足界面以使您的代碼符合Ext-JS
errorReader並不一定是一個完整的Reader實現。它只是需要實現一個讀(XHR)函數,它具有以下結構返回記錄的數組中的對象:
{ records: recordArray } // I think it needs success: boolean also.
有什麼意義?我期待API,並沒有找到解決方案來告訴,即使從服務器回答沒有參數「成功:真」,響應可以是成功的。正如我所說我需要在[Ext.Ajax.request](http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.Ajax-method-request)中的'callback'參數 – 2013-04-24 13:24:43
@AndrewKevich如果你不通過'success:true',它會被路由到失敗端口,只是在那裏處理?你不能在你的迴應中加入'success:boolean'? – 2013-04-24 13:59:22
@AndrewKevich如果你真的想要另一個參數來確定它是否是一個錯誤,你需要傳遞'Ext.data.reader.Reader'作爲'errorReader'配置http://docs.sencha.com/extjs /4.2.0/#!/api/Ext.form.Basic-cfg-errorReader – 2013-04-24 14:06:23