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代码
Mar 27 Javascript
为Extjs加加速(javascript加速)
Aug 19 Javascript
JS图片切换的具体方法(带缩略图版)
Nov 12 Javascript
javascript获取四位数字或者字母的随机数
Jan 09 Javascript
javascript获取元素离文档各边距离的方法
Feb 13 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
Dec 07 Javascript
js确认框confirm()用法实例详解
Jan 07 Javascript
JS获取鼠标选中的文字
Aug 10 Javascript
javascript判断firebug是否开启的方法
Nov 23 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
Jan 03 Javascript
Vue中正确使用Element-UI组件的方法实例
Oct 13 Javascript
JS中多层次排序算法的实现代码
Jan 06 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动态创建Flash动画
2006/10/09 PHP
php is_file 判断给定文件名是否为一个正常的文件
2010/05/10 PHP
php实现在限定区域里自动调整字体大小的类实例
2015/04/02 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
js实现图片轮播效果
2015/12/19 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
2016/01/26 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
python非递归全排列实现方法
2017/04/10 Python
Python编程pygal绘图实例之XY线
2017/12/09 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
CSS3的transition和animation的用法实例介绍
2014/08/20 HTML / CSS
入党自我评价范文
2014/02/02 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
spring boot中nativeQuery的用法
2021/07/26 Java/Android
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技