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 同时提交多个Web表单的方法
Feb 19 Javascript
C#中TrimStart,TrimEnd,Trim在javascript上的实现
Jan 17 Javascript
删除select中所有option选项jquery代码
Aug 12 Javascript
ajax请求get与post的区别总结
Nov 04 Javascript
基于javascript滚动图片具体实现
Nov 18 Javascript
jquery对复选框(checkbox)的操作汇总
Jan 13 Javascript
利用js判断手机是否安装某个app的多种方案
Feb 13 Javascript
jQuery选择器之属性过滤选择器详解
Sep 28 jQuery
详解如何用babel转换es6的class语法
Apr 03 Javascript
JavaScript解析机制与闭包原理实例详解
Mar 08 Javascript
django简单的前后端分离的数据传输实例 axios
May 18 Javascript
Vue和Flask通信的实现
May 19 Vue.js
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函数in_array()使用详解
2014/08/20 PHP
PHP静态成员变量
2017/02/14 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2020/04/06 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
jquery获取input表单值的代码
2010/04/19 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
2012/02/27 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
总结JavaScript中布尔操作符||与&amp;&amp;的使用技巧
2015/11/17 Javascript
JavaScript cookie详解及简单实例应用
2016/12/31 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
详解Vue.js中.native修饰符
2018/04/24 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
python实现随机森林random forest的原理及方法
2017/12/21 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
Python StringIO如何在内存中读写str
2020/01/07 Python
python爬虫爬取监控教务系统的思路详解
2020/01/08 Python
Python中zipfile压缩文件模块的基本使用教程
2020/06/14 Python
使用Python-OpenCV消除图像中孤立的小区域操作
2020/07/05 Python
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
2016/03/14 HTML / CSS
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
个人评价范文分享
2014/01/11 职场文书
益达广告词
2014/03/14 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
项目安全员岗位职责
2015/02/15 职场文书
小学主题班会教案
2015/08/17 职场文书
小学英语新课改心得体会
2016/01/22 职场文书