本人在使用js ajax调用某私有接口时遇到了该问题,请求返回值为{“data”:"",“info”:“json Parsing failed”,“status”:5146},该私有接口对请求的Header和传入数据的格式要求非常严格,起初我认为是对请求返回的数据解析错误,之后发现是在传入数据时{、“都存在转义现象,有可能导致解析错误,这里附上改过之前与之后的代码,记录一下该问题:
1)改过之前:
//向服务器发送请求
$.ajax({
url: "url",
dataType: "json",
type: "POST",
headers:{
"Content-Type":"application/json",
},
contentType: "application/json", //这里该接口要求必须为该格式
data:{
"uid": 38121
},
xhrFields: {
withCredentials: true
},
//请求成功时
success: function(data) {
console.log(data);
},
//请求发生错误
error: function() {
console.log("request error");
},
})
2)改过之后:
//以下三行即为改动的部分,读取用户输入到输入框中的内容中{ 和 “ 都是经过转译的,即\"。
//所以要先将其通过JSON.parse函数转换成json格式,而后再由JSON.stringify转换成字符串格式。
//如果直接在POSTMAN或页面中构造data,则不需要JSON.parse转换。
var uid='{"uid": 38121}';
uid=JSON.parse(uid);
uid=JSON.stringify(uid);
//向服务器发送请求
$.ajax({
url: "url",
dataType: "json",
type: "POST",
headers:{
"Content-Type":"application/json",
},
contentType: "application/json", //这里该接口要求必须为该格式
data: uid ,//这里调用uid
xhrFields: {
withCredentials: true
},
//请求成功时
success: function(data) {
console.log(data);
},
//请求发生错误
error: function() {
console.log("request error");
},
})