出现场景
var params={"strStartDt":"/Date(1553702400000+0800)","strEndDt":"/Date(1553788799000+0800)","iQueryType":0,"strCondition":"67sdsafOOK+aJhfdfw=="}
$.ajax({
url:'http://192.168.67.1/test',
type: 'post',
contentType:'application/x-www-form-urlencoded',
data: JSON.stringify(params),
success(res){
console.log(res)
},
error(err){
console.log(err)
}
})
打开network会发现,请求中数据的’+’,’='都变成了空格,出现这个问题的主要原因便是contentType:'application/x-www-form-urlencoded'
和JSON.stringify(params)
参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
解决办法:
1.contentType改为application/json
2.不使用JSON.stringify()
3.(推荐)将params中包含特殊字符的字段进行encode,之后再进行stringify,代码如下
params.strStartDt=encodeURIComponent(params.strStartDt)
params.strEndDt=encodeURIComponent(params.strEndDt)
params.strCondition=encodeURIComponent(params.strCondition)