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中使用"with"语句中跨frame的变量引用问题
Mar 08 Javascript
19个很有用的 JavaScript库推荐
Jun 27 Javascript
jQuery学习笔记之控制页面实现代码
Feb 27 Javascript
javascript定义类和类的实现实例详解
Dec 01 Javascript
javascript事件委托的用法及其好处简析
Apr 04 Javascript
浅谈window.onbeforeunload() 事件调用ajax
Jun 29 Javascript
layui中layer前端组件实现图片显示功能的方法分析
Oct 13 Javascript
JS实现点击循环切换显示内容的方法
Oct 19 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
Jun 07 Javascript
webpack 最佳配置指北(推荐)
Jan 07 Javascript
vue3.0 的 Composition API 的使用示例
Oct 26 Javascript
JS数组去重详情
Nov 07 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/12/06 PHP
对Session和Cookie的区分与解释
2007/03/16 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
php stream_get_meta_data返回值
2013/09/29 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
Opacity.js
2007/01/22 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
Js基础学习资料
2010/11/23 Javascript
使用javascript创建快捷方式的简单实例
2013/08/09 Javascript
js 获取、清空input type="file"的值示例代码
2014/02/19 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
JQuery节点元素属性操作方法
2015/06/11 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
vue axios用法教程详解
2017/07/23 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
django的model操作汇整详解
2019/07/26 Python
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
百度软件工程师职位
2013/02/14 面试题
静态变量和实例变量的区别
2015/07/07 面试题
2014年仓库管理员工作总结
2014/11/18 职场文书
新兵入伍决心书
2015/09/22 职场文书
浅谈Python数学建模之整数规划
2021/06/23 Python
PHP实现两种排课方式
2021/06/26 PHP
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python
Golang入门之计时器
2022/05/04 Golang
Python测试框架pytest高阶用法全面详解
2022/06/01 Python
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS