1. 程式人生 > >ExtJS傳送POST請求 引數格式為JSON

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。

  1. Ext.define('Ext.ux.data.proxy.JsonAjaxProxy',{
  2. extend:'Ext.data.proxy.Ajax',
  3. alias:'proxy.jsonajax',
  4. actionMethods :{
  5. create:"POST",
  6. read:"POST",
  7. update:"POST",
  8. destroy:"POST"
  9. },
  10. buildRequest:function(operation){
  11. var request =this.callParent(arguments);
  12. // For documentation on jsonData see Ext.Ajax.request
  13.         request.jsonData = request.params;
  14.         request.params ={};
  15. return request;
  16. },
  17. /*
  18. * @override
  19. * Inherit docs. We don't apply any encoding here because
  20. * all of the direct requests go out as jsonData
  21. */
  22. applyEncoding:function(value){
  23. return value;
  24. }
  25. });

使用也很方便,將proxy的type設定為jsonajax即可。

  1. proxy
    :{
  2.    type :'jsonajax'
  3. ...
  4. }