ExtJS傳送POST請求 引數格式為JSON
阿新 • • 發佈:2019-02-03
背景
這要從我比較懶說起。技術框架ExtJS + resteasy,預設請求方式是ajax get,這後臺方法就要寫很多@QueryParam來獲取引數。我比較喜歡前臺用ajax post請求,後臺方法引數就是一個map,所有前臺引數對映成map的key-value,然後將map --> json(com.alibaba.fastjson) --> pojo物件。
這裡不得不讚一下fastjson轉化資料型別很智慧,諸如integer、date型別基本不需要自定義方法就完美轉換。
例子
通過google找到一種很方便的解決方案,自定義用代理proxy來實現傳送POST請求,並指定引數型別為json。
Ext.define('Ext.ux.data.proxy.JsonAjaxProxy',{
extend:'Ext.data.proxy.Ajax',
alias:'proxy.jsonajax',
actionMethods :{
create:"POST",
read:"POST",
update:"POST",
destroy:"POST"
},
buildRequest:function(operation){
var request =this.callParent(arguments);
// For documentation on jsonData see Ext.Ajax.request
request.jsonData = request.params;
request.params ={};
return request;
},
/*
* @override
* Inherit docs. We don't apply any encoding here because
* all of the direct requests go out as jsonData
*/
applyEncoding:function(value){
return value;
}
});
使用也很方便,將proxy的type設定為jsonajax即可。
proxy
type :'jsonajax'
...
}