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 拾漏补遗
Dec 27 Javascript
JS代码同步文本框内容的实例方法
Jul 12 Javascript
Js中获取frames中的元素示例代码
Jul 30 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
Dec 08 Javascript
浅析javascript中function 的 length 属性
May 27 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
Nov 23 Javascript
AngularJS实现表单验证功能
Jan 09 Javascript
Vue form 表单提交+ajax异步请求+分页效果
Apr 22 Javascript
微信提示 在浏览器打开 效果实现过程解析
Sep 10 Javascript
layui table 表格上添加日期控件的两种方法
Sep 28 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
Jan 16 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
Nov 07 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,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
js编写贪吃蛇的小游戏
2020/08/24 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
react-native封装插件swiper的使用方法
2018/03/20 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python自动化报告的输出用例详解
2018/05/30 Python
python微信公众号之关键词自动回复
2018/06/15 Python
Python中Unittest框架的具体使用
2019/08/27 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
2012/02/21 面试题
音乐专业应届生教师求职信
2013/11/04 职场文书
卫生系统先进事迹
2014/05/13 职场文书
工程项目经理任命书
2014/06/05 职场文书
生物技术专业求职信
2014/06/10 职场文书
机电专业求职信
2014/06/14 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
爱心捐助活动总结
2015/05/09 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书