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 parseInt(&quot;08&quot;)未指定进位制问题
Jun 19 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
Sep 10 Javascript
超级好用的jQuery圆角插件 Corner速成
Aug 31 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
May 26 Javascript
vue.js学习之递归组件
Dec 13 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
Jan 27 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
Jul 17 jQuery
JavaScript实现简单评论功能
Aug 17 Javascript
vue.draggable实现表格拖拽排序效果
Dec 01 Javascript
微信小程序实现文字无限轮播效果
Dec 28 Javascript
vue项目在webpack2实现移动端字体自适配功能
Jun 02 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
Dec 04 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
类的另类用法--数据的封装
2006/10/09 PHP
PHP 翻页 实例代码
2009/08/07 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
php集成动态口令认证
2016/07/21 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
2019/11/05 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
提升Python程序运行效率的6个方法
2015/03/31 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
python图像和办公文档处理总结
2019/05/28 Python
python三大神器之fabric使用教程
2019/06/10 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
python实现函数极小值
2019/07/10 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
标准毕业生自荐信范文
2013/11/04 职场文书
单位门卫岗位职责
2013/12/20 职场文书
大学新生军训感言
2014/02/25 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
Python访问Redis的详细操作
2021/06/26 Python
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android
Python中的 No Module named ***问题及解决
2022/07/23 Python