当前位置: 首页 > news >正文

ios ajax utf-8,关于jquery.ajax 与axios 请求接口的request header :Content-type设置问题

请求接口,传递参数发送请求时候,后端会指定传递的参数类型(即request header的content-type)

如果了解jquery.ajax 与axios,可以省略指定,让浏览器根据传递参数类型与添加。

例如登陆接口,要求前端请求的request Content-Type类型 "Content-Type": "application/x-www-form-urlencoded",

如果header中传递数据如下,就不用手动设置Content-Type:

data: paramsData,

transformRequest: [function(data) {

data = Qs.stringify(data);  // Qs使用情况在文后

return data;

}],

规则如下:

1  jQuery.ajax的post提交默认的请求头的Content-Type: application/x-www-form-urlencoded

2  axios,在data是内置对象的时候会进行一些自动设置,

(1)  当 data 是 FormData 时,即便设置content-type 的值,也会被强制删除,让浏览器自己设置为multipart/form-data。

(2)   当 data 为 URLSearchParams 对象时设置为 application/x-www-form-urlencoded;charset=utf-8,

(3)    当 data 为普通对象(包含数组)时,会被设置为 application/json;charset=utf-8

/* qs 使用说明

qs是一个npm仓库所管理的包

1. qs.parse()将URL解析成对象的形式。

const qs= require('qs');

let url = "admin=jack&appToken=abcdefg";

qs.parse(url);

console.log(qs.parse(url));

会生成{admin:’jack‘,appToken:'abcdefg'}

2 qs.stringify()将对象 序列化成URL的形式,以&进行拼接

如上,qs.stringify({admin:’jack‘,appToken:'abcdefg'}),变为  "admin=jack&appToken=abcdefg"

如果改变的是数组,默认情况下,它们给出明确的索引,如下代码

qs.stringify({ a: ['b', 'c', 'd'] });       // 'a[0]=b&a[1]=c&a[2]=d'    也可以进行重写这种默认方式为false

qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false });   // 'a=b&a=c&a=d'

当然,也可以通过arrayFormat 选项进行格式化输出,如下代码所示:

qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })    // 'a[0]=b&a[1]=c'

qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })  // 'a[]=b&a[]=c'

qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })     // 'a=b&a=c'

在这里需要注意的是,JSON中同样存在stringify方法,但是两者之间的区别是很明显的,如下所示:

{"uid":"yh9999","pwd":"sh9999"}  // JSON.stringify(param)

uid=yh9999&pwd=sh9999   //Qs.stringify(param)

如上所示,前者是采用JSON.stringify(param)进行处理,后者是采用Qs.stringify(param)进行处理的

相关文章:

  • 虚拟机服务器磁盘扩容步骤,XenServer 虚拟机扩容LVM磁盘分区的方法
  • powerbi服务器打开文件慢,Power BI文件太大无法发布?这个方法推荐给你
  • 服务器响应类,服务器响应HTTP的类型ContentType大全(2)
  • 360手机如何修改服务器,360路由器手机怎么设置_手机如何设置360路由器? - 192路由网...
  • 奥特系列ol新生代服务器,奥特曼系列ol新生代抽奖模拟器
  • 其他的网络文件和打印服务器,网络文件和打印服务.ppt
  • mac使用被动ftp模式(pasv)_浅谈FTP,SFTP,FTPS区别
  • rs232接口_你知道RS232与RS485接口的区别吗?
  • agx 安装ros opencv_「OpenCV+Python」一行代码搞定张正友相机标定及图像矫正
  • 三菱plc232数据线驱动下载_2020山东三菱PLCFX3GA40MT回收回收量大收购诚信回收
  • getaway网关转发去前缀_如何极度压榨网络性能:揭秘 UCloud 的物理云网关
  • esp32 camera_利用Phyphox和ESP32蓝牙探究光敏电阻电流与光强的关系
  • iphone如何信任软件_不是什么数据都能恢复的:留神那些号称可以恢复iPhone数据的工具...
  • 360安全浏览器兼容模式怎么设置_网络资讯:360安全浏览器怎么样
  • csrf攻击原理与解决方法_动图之磁翻板液位计原理及指示异常的判定解决方法...
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【mysql】环境安装、服务启动、密码设置
  • 345-反转字符串中的元音字母
  • Angular 2 DI - IoC DI - 1
  • Angular Elements 及其运作原理
  • CentOS6 编译安装 redis-3.2.3
  • Docker 笔记(2):Dockerfile
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • JS变量作用域
  • js中的正则表达式入门
  • PHP面试之三:MySQL数据库
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 前端面试题总结
  • 日剧·日综资源集合(建议收藏)
  • 走向全栈之MongoDB的使用
  • 《码出高效》学习笔记与书中错误记录
  • 湖北分布式智能数据采集方法有哪些?
  • 我们雇佣了一只大猴子...
  • (a /b)*c的值
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (第二周)效能测试
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十)c52学习之旅-定时器实验
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (一)为什么要选择C++
  • (原)本想说脏话,奈何已放下
  • (转) ns2/nam与nam实现相关的文件
  • (转)Oracle存储过程编写经验和优化措施
  • .net 7 上传文件踩坑
  • .NET Core 中的路径问题
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET中两种OCR方式对比
  • .sh 的运行
  • @RequestBody的使用
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [C++]命名空间等——喵喵要吃C嘎嘎
  • [element-ui] el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案
  • [ffmpeg] x264 配置参数解析