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 相关文章推荐
特殊字符、常规符号及其代码对照表
Jun 26 Javascript
JAVASCRIPT HashTable
Jan 22 Javascript
jquery如何把参数列严格转换成数组实现思路
Apr 01 Javascript
如何动态加载外部Javascript文件
Dec 02 Javascript
AngularJS入门教程之Helloworld示例
Dec 25 Javascript
Vue filters过滤器的使用方法
Jul 14 Javascript
AngularJS select设置默认值的实现方法
Aug 25 Javascript
微信小程序实现tab和swiper切换结合效果
Jul 17 Javascript
基于vue cli重构多页面脚手架过程详解
Jan 23 Javascript
微信小程序template模板与component组件的区别和使用详解
May 22 Javascript
原生js实现抽奖小游戏
Jun 27 Javascript
js实现扫雷源代码
Nov 27 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
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
2020/09/13 PHP
JS 控件事件小结
2012/10/31 Javascript
js/jQuery简单实现选项卡功能
2014/01/02 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
JS奇技之利用scroll来监听resize详解
2017/06/15 Javascript
vue实现表格增删改查效果的实例代码
2017/07/18 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
JS函数基本定义与用法示例
2020/01/15 Javascript
JS实现手风琴特效
2020/11/08 Javascript
Python 字符串定义
2009/09/25 Python
在Django的通用视图中处理Context的方法
2015/07/21 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
python多线程之事件Event的使用详解
2018/04/27 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
Python中如何导入类示例详解
2019/04/17 Python
python实现密码强度校验
2020/03/18 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
保安自我鉴定范文
2013/12/08 职场文书
期终自我鉴定
2014/02/17 职场文书
小学生春游活动方案
2014/08/20 职场文书
健康证明
2015/06/19 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
redis配置文件中常用配置详解
2021/04/14 Redis
用php如何解决大文件分片上传问题
2021/07/07 PHP
Django框架模板用法详解
2022/06/10 Python