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 相关文章推荐
ejs v9 javascript模板系统
Mar 21 Javascript
js触发asp.net的Button的Onclick事件应用
Feb 02 Javascript
基于jQuery中对数组进行操作的方法
Apr 16 Javascript
Highcharts 非常实用的Javascript统计图demo示例
Jul 03 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
Sep 19 Javascript
jQuery stop()用法实例详解
Jul 28 Javascript
详解jQuery简单的表单应用
Dec 16 Javascript
微信小程序 详解Page中data数据操作和函数调用
Jan 12 Javascript
javaScript基础详解
Jan 19 Javascript
Vue.js 2.0中select级联下拉框实例
Mar 06 Javascript
快速使用node.js进行web开发详解
Apr 26 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
Nov 27 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
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
js实现拖拽上传图片功能
2017/08/01 Javascript
使用JS动态显示文本
2017/09/09 Javascript
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
python爬取指定微信公众号文章
2018/12/20 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
python批量解压zip文件的方法
2019/08/20 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
护士自荐信范文
2013/12/15 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
会计自我鉴定
2014/02/04 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
消防安全培训工作总结
2015/10/23 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
golang内置函数len的小技巧
2021/07/25 Golang