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动态调整iframe高度的方法
Mar 06 Javascript
js限制textarea每行输入字符串长度的代码
Oct 31 Javascript
jquery获取div宽度的实现思路与代码
Jan 13 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
Dec 24 Javascript
jquery实现的网页自动播放声音
Apr 30 Javascript
jQuery组件easyui基本布局实现代码
Aug 25 Javascript
jQuery实现div跟随鼠标移动
Aug 20 jQuery
利用javascript如何随机生成一定位数的密码
Sep 22 Javascript
面包屑导航详解
Dec 07 Javascript
node puppeteer(headless chrome)实现网站登录
May 09 Javascript
Node.js实现批量下载图片简单操作示例
Jan 18 Javascript
JS实现简单九宫格抽奖
Jun 28 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实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
php有道翻译api调用方法实例
2014/12/22 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
JavaScript 事件查询综合
2009/07/13 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
详解python之协程gevent模块
2018/06/14 Python
Python3连接SQLServer、Oracle、MySql的方法
2018/06/28 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
python SQLAlchemy的Mapping与Declarative详解
2019/07/04 Python
python做接口测试的必要性
2019/11/20 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
详解Python IO口多路复用
2020/06/17 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
Python实现简单的2048小游戏
2021/03/01 Python
thinkphp5 路由分发原理
2021/03/18 PHP
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
优秀团员个人事迹材料
2014/01/29 职场文书
营销总经理岗位职责
2014/02/02 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
道歉的话语大全
2015/05/12 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
聊一聊Redis与MySQL双写一致性如何保证
2021/06/26 Redis