ExtJS發送POST請求 參數格式為JSON


背景

    這要從我比較懶說起。技術框架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'
   ...
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM