请求媒体类型[application / json]错误!对于Extjs Ajax请求,请求正文不是JSON格式问题

时间:2017-07-26 11:20:21

标签: json ajax extjs

我正在使用Extjs 5.1.3。我有params的发布请求 -

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

我的猜测就像问题是因为rulename值为“Test1”。 所以有人可以帮我失踪。

1 个答案:

答案 0 :(得分: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){
    })
})

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