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 相关文章推荐
javascript 清空form表单中某种元素的值
Dec 26 Javascript
JavaScript Event学习第十一章 按键的检测
Feb 10 Javascript
浅谈JavaScript字符集
May 22 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
Feb 17 Javascript
onclick和onblur冲突问题的快速解决方法
Apr 28 Javascript
AngularJS入门教程之过滤器详解
Aug 19 Javascript
JavaScript生成验证码并实现验证功能
Sep 24 Javascript
jQuery实现拖动效果的实例代码
Jun 25 jQuery
vue中手机号,邮箱正则验证以及60s发送验证码的实例
Mar 16 Javascript
如何检查一个对象是否为空
Apr 11 Javascript
原生js代码能实现call和bind吗
Jul 31 Javascript
vue+elementUi图片上传组件使用详解
Aug 20 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
PHP 导出数据到淘宝助手CSV的方法分享
2010/02/27 PHP
php实现图片转换成ASCII码的方法
2015/04/03 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
vue项目引入字体.ttf的方法
2018/09/28 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
实例介绍JavaScript中多种组合继承
2019/01/20 Javascript
JS中实现一个下载进度条及播放进度条的代码
2019/06/10 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
[37:45]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS Orenda
2014/05/22 DOTA
python的concat等多种用法详解
2018/11/28 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
大学生自我评价怎样写好
2013/10/23 职场文书
化工专业个人的求职信范文
2013/11/28 职场文书
个人对照检查材料
2014/02/12 职场文书
中考冲刺决心书
2014/03/11 职场文书
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
学术会议领导致辞
2015/07/29 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis