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效果
Mar 05 Javascript
jQuery 文本框得失焦点的简单实例
Feb 19 Javascript
JS阻止用户多次提交示例代码
Mar 26 Javascript
javascript学习笔记(一)基础知识
Sep 30 Javascript
JSONObject使用方法详解
Dec 17 Javascript
JS实现的样式切换功能tableCSS实例
Dec 30 Javascript
JavaScript实现按键精灵的原理分析
Feb 21 Javascript
jquery插件ContextMenu设置右键菜单
Mar 13 Javascript
详解Angular5 服务端渲染实战
Jan 04 Javascript
JavaScript中为事件指定处理程序的五种方式分析
Jul 27 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
Oct 28 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
Jan 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许愿墙模块功能分析
2013/06/25 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
ExtJS下grid的一些属性说明
2009/12/13 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
使用正则表达式的格式化与高亮显示json字符串
2014/12/03 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
Ajax验证用户名或昵称是否已被注册
2017/04/05 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
2020/08/03 Javascript
Python中的面向对象编程详解(上)
2015/04/13 Python
利用python画一颗心的方法示例
2017/01/31 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
Python3 执行系统命令并获取实时回显功能
2019/07/09 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
微型企业创业投资计划书
2014/01/10 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
医院党员公开承诺书
2014/08/30 职场文书
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js