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之软键盘实现(js源码)
Jan 30 Javascript
nw.js实现类似微信的聊天软件
Mar 16 Javascript
js点击文本框后才加载验证码实例代码
Oct 20 Javascript
jquery按回车键实现表单提交的简单实例
May 25 Javascript
AngularJS中的表单简单入门
Jul 28 Javascript
用js实现博客打赏功能
Oct 24 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
Dec 30 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
Jan 24 Javascript
详解基于electron制作一个node压缩图片的桌面应用
Jan 29 Javascript
electron实现静默打印的示例代码
Aug 12 Javascript
解决vue-loader加载不上的问题
Oct 21 Javascript
Vuex实现简单购物车
Jan 10 Vue.js
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
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
简单学习vue指令directive
2016/11/03 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
2016/12/14 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
丝芙兰加拿大官方网站:SEPHORA加拿大
2018/11/20 全球购物
财务会计毕业生自荐信
2013/11/02 职场文书
英文版餐饮运营管理求职信
2013/11/06 职场文书
幼儿园园长岗位职责
2013/11/26 职场文书
优秀的计算机专业求职信范文
2013/12/27 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
出纳试用期自我鉴定
2014/04/07 职场文书
师德师风个人反思
2014/04/28 职场文书
关于环保的建议书
2014/05/12 职场文书
2014年个人售房协议书
2014/10/30 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
2014流动人口计划生育工作总结
2014/12/20 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL