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 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
Mar 26 Javascript
google地图的路线实现代码
Aug 20 Javascript
javascript中setAttribute()函数使用方法及兼容性
Jul 19 Javascript
Javascript的比较汇总
Jul 25 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
Oct 27 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
Dec 07 Javascript
js鼠标跟随运动效果
Mar 11 Javascript
详解Vue 非父子组件通信方法(非Vuex)
May 24 Javascript
基于Two.js实现星球环绕动画效果的示例
Nov 06 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
Sep 04 Javascript
微信小程序仿今日头条导航栏滚动解析
Aug 20 Javascript
vue 如何从单页应用改造成多页应用
Oct 23 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
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
PHP程序员编程注意事项
2008/04/10 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
php调用云片网接口发送短信的实现方法
2017/10/25 PHP
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
jQuery插件 selectToSelect使用方法
2013/10/02 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
移动端界面的适配
2017/01/11 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
2020/04/10 Javascript
Python selenium 三种等待方式解读
2016/09/15 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
2017/09/24 Python
Python语言进阶知识点总结
2019/05/28 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
公司担保书范文
2014/05/21 职场文书
个人买房协议书范本
2014/10/06 职场文书
李强感恩观后感
2015/06/17 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript