请求媒体类型[应用程序/json] 错误!请求正文不是 Extjs Ajax 请求的 JSON 格式问题



我正在使用Extjs 5.1.3。我有参数的帖子请求-

{"root":{"countryId":"458","ruleId":"3386","ruleName":"Test1 \","ruleType":"CELL_STORE","opType":"DETAILS"}}

我正在创建 ajax 请求作为-

Ext.Ajax.request({
method: 'POST',
url: appurl.fetchRuleDetails,
params: win.jsonData,
callback: function(option, success, response){
})
})

从服务器端,响应是 -

{
"rules":[
{
"countryId":"458",
"ruleId":"3386",
"ruleName":"Test1 \",
"ruleType":"CELL_STORE",
"ruleParts":[
{
"seq":"1",
"attrId":"6",
"attrName":"Store Type",
"op":"=",
"val":"dsafdaf",
"charType":"GLOBAL_CHAR"
}
]
}
],
"Status":{
"StatusFlag":true,
"StatusCode":"SUCCESS",
"StatusMessage":"SUCCESS"
}
}

但是在 Ajax 请求的回调函数中,我们接收 response.responseText as- 请求媒体类型[应用程序/json] 错误!请求正文不是 JSON 格式。

我的猜测就像问题是因为规则名称值为"Test1 \"。 所以有人可以帮我缺少什么。

错误消息不是 ExtJS 错误消息。如果您收到与无效 JSON 相关的 ExtJS 错误,它将如下所示:

未捕获错误:您正在尝试解码无效的 JSON 字符串:测试测试

我最好的猜测是错误消息来自服务器,因为它希望您以 JSON 形式发送请求。现在,您正在将其作为FormData发送。要将请求作为 JSON 发送,您必须将对象放入jsonData配置中,并保留未定义params配置:

Ext.Ajax.request({
method: 'POST',
url: appurl.fetchRuleDetails,
jsonData: win.jsonData,
callback: function(option, success, response){
})
})

对于有关服务器-客户端通信的未来问题,请记住,您应该首先在浏览器网络选项卡中检查您发送到服务器的内容以及来自服务器的响应到底是什么。

最新更新