ajax中的参数dataType: "json"和contentType: "application/json"区别
contentType:
发送信息至服务器时内容编码类型,简单说告诉服务器请求类型的数据
contentType的默认值为”application/x-www-form-urlencoded”
就是说,在发送到服务器之前,所有字符都会进行编码。
如果不设置contentType, data可以是对象 ,
————————————————
原文链接:https://blog.csdn.net/weixin_55560445/article/details/114420410
dataType:
告诉服务器,我想要什么类型的数据,除了常见的json、XML,还可以指定 html、jsonp、script或者text
$.ajax({
type: "POST",
url: ctx + "common/BatchTermsDownload",
data: {
"filePath": encodeURI(result.msg),
"delete": true
},
//dataType: "json",
contentType: "application/json",
success: function (res) {
console.log(res)
$.modal.alertError(res.message)
},
error: function (res) {
console.log(res)
}
})
开始是只设置了contentType: “application/json”,然后到后端一直获取不到json数据对象,
这个是后台的接口:
打断点然后请求过来获取的是空数据:
然后百思不得其解, 然后在一篇博客中得到启发,把contentType: “application/json”,换成dataType: “json”,
然后请求后端的接口有值了, nice
因为我没有设置contentType的值, 然后请求的时候使用的是默认的表单格式数据, 把我的数据格式化了,
思考: 为啥这种可以, 而我把参数设置成contentType: "application/json"却不行?
猜想: 我想应该是json数据的对象, 不能直接通过名字进行获取, 它的底层应该还需要把json数据转化为json对象, 通过json对象获取里面json数据(有可能数据有问题, 转化也会有问题, 或者后台接收的有问题)