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实现单继承和多继承的简单方法
Mar 29 Javascript
Function.prototype.call.apply结合用法分析示例
Jul 03 Javascript
JS获取当前日期和时间的简单实例
Nov 19 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
Dec 16 Javascript
js禁止回车提交表单的示例代码
Dec 23 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
Jun 19 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
Oct 04 Javascript
如何使用AngularJs打造权限管理系统【简易型】
May 09 Javascript
IntersectionObserver API 详解篇
Dec 11 Javascript
AngularJS ui-router (嵌套路由)实例
Mar 10 Javascript
js封装成插件_Canvas统计图插件编写实例
Sep 12 Javascript
详解vue-router传参的两种方式
Sep 10 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使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
2018/07/17 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
node.js中的path.sep方法使用说明
2014/12/08 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
跟老齐学Python之不要红头文件(1)
2014/09/28 Python
Python缩进和冒号详解
2016/06/01 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
详解pycharm2020.1.1专业版安装指南(推荐)
2020/08/07 Python
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
商场消防管理制度
2014/01/12 职场文书
酒店总经理助理岗位职责
2014/02/01 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
火灾现场处置方案
2014/05/28 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
班级体育活动总结
2014/07/05 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
用JS创建一个录屏功能
2021/11/11 Javascript
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS