【问题标题】:Request Media Type[application/json] Error! Request Body is not JSON format issue for Extjs Ajax request请求媒体类型[application/json] 错误!请求正文不是 Extjs Ajax 请求的 JSON 格式问题
【发布时间】:2018-01-01 16:31:14
【问题描述】:

我正在使用 Extjs 5.1.3。我有参数 as-

的发布请求
{"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 作为- 请求媒体类型[application/json] 错误!请求正文不是 JSON 格式。

我的猜测是因为规则名称值为“Test1 \”。 所以有人可以帮助我缺少什么。

【问题讨论】:

  • 这与 Ext 无关,您的服务器正在响应它无法读取 JSON。

标签: json ajax extjs


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 感谢您的回复先生。实际上,我也使用 chrome 的 rest 客户端插件检查了请求和响应...服务器正在正确地以 json 格式发送响应。但是在 Ajax 请求的回调函数中,我们收到 response.responseText 作为请求媒体类型 [应用程序/json] 错误!请求正文不是 JSON 格式。这很奇怪。如果在请求参数中我要替换,从“Test1 \”到“Test1”的规则名称,我能够在回调中正确获得相应的响应。所以据我说,问题是因为使用了特殊字符。我不知道为什么会这样。
猜你喜欢
  • 2020-07-18
  • 1970-01-01
  • 2018-09-19
  • 2014-05-06
  • 2019-08-01
  • 2022-11-11
  • 1970-01-01
  • 2021-12-11
  • 2012-12-16
相关资源
最近更新 更多