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代码
May 11 Javascript
iframe的onreadystatechange事件在firefox下的使用
Apr 16 Javascript
微信小程序 http请求详细介绍
Oct 09 Javascript
Three.js获取鼠标点击的三维坐标示例代码
Mar 24 Javascript
AngularJS实现进度条功能示例
Jul 05 Javascript
vue语法之拼接字符串的示例代码
Oct 25 Javascript
微信小程序数字滚动插件使用详解
Feb 02 Javascript
Puppeteer 爬取动态生成的网页实战
Nov 14 Javascript
一次Webpack配置文件的分离实战记录
Nov 30 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
May 20 Javascript
layui 表单标签的校验方法
Sep 04 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
Nov 26 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编程开发“虚拟域名”系统
2006/10/09 PHP
利用PHP制作简单的内容采集器的代码
2007/11/28 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
2016/02/04 PHP
Redis构建分布式锁
2017/03/28 PHP
许愿墙中用到的函数
2006/10/07 Javascript
javascript 打印内容方法小结
2009/11/04 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
vue实现商城购物车功能
2017/11/27 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
教你用Python创建微信聊天机器人
2020/03/31 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
精彩自我鉴定
2014/01/16 职场文书
经典公益广告词
2014/03/13 职场文书
谢师宴答谢词
2015/01/05 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
员工安全责任协议书
2016/03/22 职场文书