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 走马灯简单实例
Nov 21 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
Apr 11 Javascript
jQuery学习总结之jQuery事件
Jun 30 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
Jan 28 Javascript
Node.js实现兼容IE789的文件上传进度条
Sep 02 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
Jun 01 Javascript
angularjs数组判断是否含有某个元素的实例
Feb 27 Javascript
layui--js控制switch的切换方法
Sep 03 Javascript
layer提示框添加多个按钮选择的实例
Sep 12 Javascript
Vue组件基础用法详解
Feb 05 Javascript
在vue中使用防抖函数组件操作
Jul 26 Javascript
Javascript文本框脚本实现方法解析
Oct 30 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加密解密实例分析
2015/12/25 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
JavaScript静态的动态
2006/09/18 Javascript
jQuery 判断元素上是否绑定了事件
2009/10/28 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
基于vue展开收起动画的示例代码
2018/07/05 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
Python_LDA实现方法详解
2017/10/25 Python
python字符串常用方法
2018/06/14 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
Python更换pip源方法过程解析
2020/05/19 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
Python字典实现伪切片功能
2020/10/28 Python
CSS3实现伪类hover离开时平滑过渡效果示例
2017/08/10 HTML / CSS
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
玩具反斗城天猫官方旗舰店:享誉全球的玩具店
2017/10/10 全球购物
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
森林病虫害防治方案
2014/06/02 职场文书
新疆民族团结演讲稿
2014/08/27 职场文书
消防演习通知
2015/04/25 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书