ExtJS发送POST请求 参数格式为JSON

这篇博客讲述了如何在ExtJS中通过自定义代理proxy实现POST请求,并以JSON格式传递参数。作者偏好使用POST请求,因为这样可以将所有参数映射到后台的Map,再转化为JSON对象,利用fastjson库智能转换数据类型。文中提供了一个方便的解决方案,通过设置proxy的type为jsonajax来轻松完成这一操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

    这要从我比较懒说起。技术框架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. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值