AngularJS的ng Http Request与response格式转换方法


Posted in Javascript onNovember 07, 2016

本文实例讲述了AngularJS的ng Http Request与response格式转换方法。分享给大家供大家参考,具体如下:

angular作为Single Page Application推荐的交互方式当然是基于json的ajax调用。但今天要说的是当你不幸工作在一个遗留或者不可控制的服务上,而这服务是基于非json提交方式(或许是常规表单(form)提交,或者其他自定义数据格式),那么我们只能改变ng内部$http默认request/response格式转化方式。

所幸的是ng $http给我们提供了多种可用方式转化数据格式(下面demo将以form提交方式为例):

***对于部分单独的http request设置:

对于http ajax方式最后一个参数都是关于http的配置信息,其中包括一项transformRequest,我们可以利用transformRequest在ajax发送数据之前改变数据的格式,例如下边的demo:

$http.post("/url", {
   id: 1,
   name: "greengerong"
  }, {
   transformRequest: function(request) {
    return $.param(request);
  }
});

这里利用jQuery的$.param进行表单提交方式的格式转化,所以我们能够看见的request body 为:

id=1&name=greengerong

***对于整个app的http request设置:

如果我们需要对整个http的数据转化格式进行设置,那么可以选用在config阶段对$httpProvider默认行为进行设置:

angular.module("app", [])
.config(["$httpProvider", function($httpProvider) {
   $httpProvider.defaults.transformRequest = [
    function(request) {
     return $.param(request);
    }
   ];
  }
]);

这样我们就可以轻易的转化为form提交方式。

同样$http也为我们提供了transformResponse方式,我们也可以创建自己的response转化,比如json之前加入自定义前缀防止json array攻击等等。

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
js各种验证文本框输入格式(正则表达式)
Oct 22 Javascript
基于jQuery的图片大小自动适应实现代码
Nov 17 Javascript
javascript中万恶的function实例分析
May 25 Javascript
js关闭父窗口时关闭子窗口
Apr 01 Javascript
JS获取当前网址、主机地址项目根路径
Nov 19 Javascript
简单易用的倒计时js代码
Aug 04 Javascript
简介AngularJS中$http服务的用法
Feb 06 Javascript
js原生代码实现轮播图的实例讲解
Jul 28 Javascript
JS 实现banner图片轮播效果(鼠标事件)
Aug 04 Javascript
vue-content-loader内容加载器的使用方法
Aug 05 Javascript
vue自定义指令实现方法详解
Feb 11 Javascript
JavaScript浅层克隆与深度克隆示例详解
Sep 01 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
Nov 07 #Javascript
AngularJS ng-template寄宿方式用法分析
Nov 07 #Javascript
easyui messager alert 三秒后自动关闭提示的实例
Nov 07 #Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
Nov 07 #Javascript
AngularJS 应用身份认证的技巧总结
Nov 07 #Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
Nov 07 #Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
Nov 07 #Javascript
You might like
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
php实例化一个类的具体方法
2019/09/19 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
img的onload的另类用法
2008/01/10 Javascript
Javascript和Ajax中文乱码吐血版解决方案
2009/12/21 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
2013/11/25 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
Javascript基础教程之break和continue语句
2015/01/18 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
JavaScript设计模式之模板方法模式原理与用法示例
2018/08/07 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
PHP webshell检查工具 python实现代码
2009/09/15 Python
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
Python常用随机数与随机字符串方法实例
2015/04/09 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
Python3实现的反转单链表算法示例
2019/03/08 Python
python爬虫实现中英翻译词典
2019/06/25 Python
详解Python文件修改的两种方式
2019/08/22 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
Python中sys模块功能与用法实例详解
2020/02/26 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
英文求职信写作小建议
2014/02/16 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
旷工辞退通知书
2015/04/17 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python
解决Django transaction进行事务管理踩过的坑
2021/04/24 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
2021/06/26 Python
css3 选择器
2022/05/11 HTML / CSS