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 相关文章推荐
javascritp实现input输入框相关限制用法
Jun 29 Javascript
jquery pagination插件实现无刷新分页代码
Oct 13 Javascript
js实现点小图看大图效果的思路及示例代码
Oct 28 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
Jan 10 Javascript
jQuery中Dom的基本操作小结
Jan 23 Javascript
jquery中checkbox使用方法简单实例演示
Nov 24 Javascript
TypeOf这些知识点你了解吗
Feb 21 Javascript
AngularJS入门教程之ng-checked 指令详解
Aug 01 Javascript
浅谈实现vue2.0响应式的基本思路
Feb 13 Javascript
解决LayUI数据表格复选框不居中显示的问题
Sep 25 Javascript
jquery 插件重新绑定的处理方法分析
Nov 23 jQuery
JS 基本概念详细介绍
Oct 16 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使用filter过滤器验证邮箱 ipv6地址 url验证
2013/12/25 PHP
PHP获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
浅析javascript操作 cookie对象
2014/12/26 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
jQuery实现动态生成年月日级联下拉列表示例
2019/05/11 jQuery
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
python实现在windows下操作word的方法
2015/04/28 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
H5仿微信界面教程(一)
2017/07/05 HTML / CSS
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
理工大学毕业生自荐信
2013/11/01 职场文书
银行实习生的自我评价
2014/01/13 职场文书
禁毒宣传标语
2014/06/19 职场文书
校庆团日活动总结
2014/08/28 职场文书
综合测评自我评价
2015/03/06 职场文书
女性健康知识讲座主持词
2015/07/04 职场文书
遗嘱范文
2015/08/07 职场文书
Python selenium绕过webdriver监测执行javascript
2022/04/12 Python