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 相关文章推荐
JavaScript 嵌套函数指向this对象错误的解决方法
Mar 15 Javascript
window.location.hash 属性使用说明
Mar 20 Javascript
JS字符串拼接在ie中都报错的解决方法
Mar 27 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
Apr 04 Javascript
node.js中的fs.fchmod方法使用说明
Dec 16 Javascript
常用的js验证和数据处理总结
Aug 02 Javascript
12条写出高质量JS代码的方法
Jan 07 Javascript
Node.js console控制台简单用法分析
Jan 04 Javascript
js简单遍历获取对象中的属性值的方法示例
Jun 19 Javascript
layui前端时间戳转化实例
Nov 15 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
Apr 26 Javascript
Vue项目打包编译优化方案
Sep 16 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
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
PHP中使用虚代理实现延迟加载技术
2014/11/05 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
jQuery中$原理实例分析
2018/08/13 jQuery
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
Python中的random()方法的使用介绍
2015/05/15 Python
python运行其他程序的实现方法
2017/07/14 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
5款非常棒的Python工具
2018/01/05 Python
浅谈flask源码之请求过程
2018/07/26 Python
python SVM 线性分类模型的实现
2019/07/19 Python
python dir函数快速掌握用法技巧
2020/12/09 Python
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
大四毕业生学习总结的自我评价
2013/10/31 职场文书
中学生演讲稿
2014/04/26 职场文书
出租车拒载检讨书
2015/01/28 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
投资合作意向书范本
2015/05/08 职场文书
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript