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 相关文章推荐
BOM与DOM的区别分析
Oct 26 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
Sep 02 Javascript
JS解决ie6下png透明的方法实例
Aug 02 Javascript
JavaScript实现的in_array函数
Aug 27 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
Mar 03 Javascript
javascript计时器编写过程与实现方法
Feb 29 Javascript
CSS3 3D 技术手把手教你玩转
Sep 02 Javascript
JavaScript面试题(指针、帽子和女朋友)
Nov 23 Javascript
微信小程序 开发经验整理
Feb 15 Javascript
详解如何构建Promise队列实现异步函数顺序执行
Oct 23 Javascript
node.js爬取中关村的在线电瓶车信息
Nov 13 Javascript
element-ui table span-method(行合并)的实现代码
Dec 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+MySQL 制作简单的留言本
2009/11/02 PHP
PHP获取当前页面完整URL的实现代码
2013/06/10 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
JS backgroundImage控制
2009/05/19 Javascript
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
javascript之典型高阶函数应用介绍
2013/01/10 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
javascript实现密码验证
2015/11/10 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
Python装饰器知识点补充
2018/05/28 Python
Python3爬虫全国地址信息
2019/01/05 Python
Django实现分页显示效果
2019/10/31 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
美国顶级水上运动专业店:Marine Products
2018/04/15 全球购物
酒店总经理欢迎词
2014/01/08 职场文书
英语教育专业自荐信
2014/05/29 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
员工福利申请报告
2015/05/15 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
礼仪培训心得体会
2016/01/22 职场文书