angular中的post请求处理示例详解


Posted in Javascript onJune 30, 2020

前言

项目angular中使用jQuery请求,想替换为angular自身请求,结果发现后台没法获取?⑹???裕?檠?柿戏治鲆幌拢?龈鲎芙帷?/p>

步骤如下:

首先,angular和jQuery中请求是不同的。如下:

  • jQuery:

请求contentType是:

application/x-www-form-urlencoded; charset=UTF-8

该类型数据被编码成以 '&' 分隔的键-值对, 同时以 '=' 分隔键和值. 非字母或数字的字符会被百分比编码: 这也就是为什么这种类型不支持二进制数据(应使用 multipart/form-data 代替)。

data参数是处理过的:

// json对象
{ a : 3, b : 2 }
// 将json对象处理为
"a=3&b=2"
  • Angular:

请求contentType:

application/json

data参数:

// json对象
{a: 3,c: 2}

综上来看,angular提交后台是json,不是表单数据。我们需要把json对象转换为参数拼接,提交后台时就是表单数据了:

/**
  * 将application/json转换为application/x-www-form-urlencoded
  * @param data
  */
 handlerPostParams(data) {
  const params = [];
  for (const key in data) {
   if (data[key] && !isNull(data[key])) {
    if (data[key] instanceof Array) {
     for (let i = 0; i < data[key].length; i++) {
      if (data[key][i] && !isNull(data[key][i])) {
       const value = data[key][i];
       const name = key + '[' + i + ']';
       const innerObj = {};
       innerObj[name] = value;
       params.push(this.handlerPostParams(innerObj));
      }
     }
    } else if (data[key] instanceof Object) {
     for (const k in data[key]) {
      if (data[key][k] && !isNull(data[key][k])) {
       const value = data[key][k];
       const name = key + '[' + k + ']';
       const innerObj = {};
       innerObj[name] = value;
       params.push(this.handlerPostParams(innerObj));
      }
     }
    } else {
     const param = encodeURIComponent(key) + '=' + encodeURIComponent(data[key]);
     params.push(param);
    }
   }
  }
  return params.join('&');
 }

总结

到此这篇关于angular中post请求处理的文章就介绍到这了,更多相关angular post请求处理内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js parentElement和offsetParent之间的区别
Mar 23 Javascript
JS将秒换成时分秒实现代码
Sep 03 Javascript
SeaJS入门教程系列之完整示例(三)
Mar 03 Javascript
Node.js中HTTP模块与事件模块详解
Nov 14 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
Nov 03 Javascript
js编写贪吃蛇的小游戏
Aug 24 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
Apr 01 Javascript
基于jquery实现ajax无刷新评论
Aug 19 Javascript
jQuery表单设置值的方法
Jun 30 jQuery
react.js 父子组件数据绑定实时通讯的示例代码
Sep 25 Javascript
vue视频播放暂停代码
Nov 08 Javascript
typescript配置alias的详细步骤
Aug 12 Javascript
vue开发简单上传图片功能
Jun 30 #Javascript
jquery实现上传图片功能
Jun 29 #jQuery
vue实现图片上传到后台
Jun 29 #Javascript
JS判断数组四种实现方法详解
Jun 29 #Javascript
vue实现整屏滚动切换
Jun 29 #Javascript
vue实现页面切换滑动效果
Jun 29 #Javascript
微信小程序实现导航栏和内容上下联动功能代码
Jun 29 #Javascript
You might like
一些花式咖啡的配方
2021/03/03 冲泡冲煮
php中的观察者模式
2010/03/24 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
详解webpack解惑:require的五种用法
2017/06/09 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
Python中functools模块函数解析
2017/03/12 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
python队列原理及实现方法示例
2019/11/27 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
土木工程专业自荐信
2013/10/04 职场文书
班班通项目实施方案
2014/02/25 职场文书
安全生产大检查方案
2014/05/07 职场文书
积极向上的团队口号
2014/06/06 职场文书
幼儿生日活动方案
2014/08/27 职场文书
优秀团员个人总结
2015/02/26 职场文书
最美乡村教师观后感
2015/06/11 职场文书
于丹论语心得观后感
2015/06/15 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
2016年十一促销广告语
2016/01/28 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书