jQuery Ajax中参数data传入string类型,请求数据多一个冒号的分析

news/2024/7/11 1:29:13 标签: jQuery, ajax

问题发生环境

在使用jQueryajax函数时候,data传入一个字符串,但是请求的数据后尾出现了一个冒号(:),但是传入object类型调用请求正常。

请求截图:
这里写图片描述
ajax方法截图:
这里写图片描述
调试截图:
这里写图片描述
传入object类型调用截图
这里写图片描述

问题分析

1、为什么会出现冒号情况
因为使用的是谷歌浏览器(Chrome),在开发者工具的From Data中查看有两个模式:

  1. view parsed(解析视图),出现冒号
    这里写图片描述
  2. view source(查看源代码),没有冒号
    这里写图片描述

2、为什么视图解析会将字符解析成键值对
这个还要从jQueryajax方法说起,其中影响的是两个参数:

1、data参数,会默认转换成键值对形式,但是字符在形式中不转换。发现在解析视图中还是被解析的,可是查看源代码模式是没有实际添加的冒号。这说明只是显示的情况下看到,但是实际传输确实没有的。

data
类型: PlainObject 或 String 或 Array
发送到服务器的数据。它被转换成一个查询字符串,如果已经是一个字符串的话就不会转换。查询字符串将被追加到GET请求的URL后面。参见 processData 选项说明,以防止这种自动转换。对象必须为”{键:值}”格式。如果这个参数是一个数组,jQuery会按照traditional 参数的值, 将自动转化为一个同名的多值查询字符串(查看下面的说明)。愚人码头注:如 {foo:[“bar1”, “bar2”]} 转换为 ‘&foo=bar1&foo=bar2’。(感谢 @AL0n4k提供的翻译建议。)

2、contentType 参数,因为默认application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。所以被将被解析视图所解析。

contentType (default: ‘application/x-www-form-urlencoded; charset=UTF-8’)
Type: Boolean or String
当将数据发送到服务器时,使用该内容类型。默认值是”application/x-www-form-urlencoded; charset=UTF-8”,适合大多数情况。如果你明确地传递了一个内容类型(Content-Type)给 $.ajax(),那么他总是会发送给服务器(即使没有数据要发送)。从 jQuery 1.6 开始,你可以传递false来告诉jQuery,没有设置任何内容类型头信息。 注意:W3C的XMLHttpRequest的规范规定,数据将总是使用UTF-8字符集传递给服务器;指定其他字符集无法强制浏览器更改编码。 注意:对于跨域请求,内容类型设置为application/x-www-form-urlencoded, multipart/form-data, 或 text/plain以外, 将触发浏览器发送一个预检OPTIONS请求到服务器。

3、为什么请求状态码是415
这是因为我弄错了接口所允许的Content-type,不允许application/x-www-form-urlencoded,应该是application/json,所以这是我自己程序的问题。。。

对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝。

结论

1、这个冒号的出现是因为contentType的默认是application/x-www-form-urlencoded,所以它将被解析成键值对展示,但是字符串进去是没有改变的,但是展示的时候能看见。
2、要避免这个问题就需要将contentType改为application/json。当然修改了这个参数你的后台接口程序必须支持这个请求类型。
3、对于跨域请求,当contentType改为application/json,将触发浏览器发送一个预检OPTIONS请求到服务器。而这个请求后台接口必须支持。
4、这个是个人对于这个问题的一点个人看法,要是有什么问题请在下方留言,共同进步,十分感谢~

参考文献

1、jQuery API 中文文档
2、开源中国-HTTP状态码详解


http://www.niftyadmin.cn/n/803328.html

相关文章

位运算判断奇偶数_位运算实现加减乘除法

提示与建议:同学们在自学位运算符相关知识后配合本文巩固已学内容,效果更佳哦今天我们来学习一下只用位运算符来模拟加减乘除法。【1.加法】不管是十进制加法还是二进制加法,其加的过程在每一位看,分为和、进位两个部分。和要留在…

python_day3学习笔记

set集合python的set是一个无序不重复元素集,基本功能包括关系测试和消除重复元素. 集合对象还支持并、交、差、对称差等。 sets 支持 x in set、 len(set)、和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支…

java 发送POST、GET请求时,获取请求的头信息Set-Cookie,请求携带Cookie

需求背景 1、前端在请求时遇到跨域请求,连续的请求之间需要携带上一次的Cookie,前端不便于实现。 2、所以需要后端实现Cookie的获取与请求携带,实现请求服务的代理请求。 可行性分析 1、 cookie (储存在用户本地终端上的数据&…

拍照区域遮盖层_住宅物业管理服务篇-《设施设备及公共区域巡检维护作业指导书》...

雨滴大点小点住宅物业学堂-住宅物业管理服务篇-工程管理03------(各位看官如需运行表格或者标书、工程管理、合同等技术文件,由于不能上传表格,请关注本人后私聊,本人将每周回复一次。)1.0目的规范和指引共用设施维护标准及维护作业要求&…

Android Developer -- Bluetooth篇 概述

Bluetooth 安卓平台支持蓝牙网络协议栈,它允许设备与其他蓝牙设备进行无线交换数据。应用程序框架通过安卓蓝牙APIs提供访问蓝牙功能。这些APIs使应用程序通过无线连接到其他蓝牙设备,使点对点和多点的无线功能。 使用蓝牙APIs,安卓应用程序可…

使用jquery.table2excel,将HTML的table标签数据导出成excel,包含导出图片到excel

在web实际使用中,需要将页面的表格转换成为EXCEL表格,原想写个原生的,但是发现一个插件很好用——jquery.table2excel,在这写一个简单的demo。 参考来源 jQuery之家介绍table2excel的github地址table2excel的js文件下载地址 源…

mycat navicat远程访问_分布式数据库中间件 MyCat 搞起来

MyCat 简介前面文章我们提到,如果数据量比较大的话,我们需要对数据进行分库分表,分完之后,原本存在一个数据库中的数据,现在就存在多个数据库中了,就像下面这样:那么此时 MyCat 所扮演的角色就是…

java 使用JavaMail 做异常邮件报警 ,支持163邮箱、outlook邮箱

需求 想要使用邮件来监控服务器上的异常信息,当程序抛出指定自定义异常的时候将异常信息以邮件的形式发送到监控的邮箱。 要求 1、发生异常时捕获异常信息 2、时实发送信息邮件到目标邮箱 解决方案 1、自定义一个基本的异常,其他的使用异常继承改异…