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 循环读取JSON数据的代码
Jul 17 Javascript
禁止你的左键复制实用技巧
Jan 04 Javascript
jQuery列表拖动排列具体实现
Nov 04 Javascript
JS创建自定义表格具体实现
Feb 11 Javascript
jQuery循环动画与获取组件尺寸的方法
Feb 02 Javascript
Jquery实现textarea根据文本内容自适应高度
Apr 03 Javascript
Javascript中Date类型和Math类型详解
Feb 27 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
Sep 28 Javascript
JavaScript利用闭包实现模块化
Jan 13 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
Sep 12 Javascript
微信小程序pinker组件使用实现自动相减日期
May 07 Javascript
js实现表单项的全选、反选及删除操作示例
Jun 05 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 error_log 函数的使用
2009/04/13 PHP
兼容性比较好的PHP生成缩略图的代码
2011/01/12 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
Swoole实现异步投递task任务案例详解
2019/04/02 PHP
取得传值的函数
2006/10/27 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
JS数组及对象遍历方法代码汇总
2020/06/16 Javascript
解决vant中 tab栏遇到的坑 van-tabs
2020/11/04 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
对python中return和print的一些理解
2017/08/18 Python
Python hashlib模块用法实例分析
2018/06/12 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
python生成带有表格的图片实例
2019/02/03 Python
基于python实现百度翻译功能
2019/05/09 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
Python实现自动签到脚本功能
2020/08/20 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
方正Java笔试题
2014/07/03 面试题
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
Python的这些库,你知道多少?
2021/06/09 Python
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python