2017-07-26 89 views
0

我正在使用Extjs 5.1.3。我有使用參數post請求原樣請求媒體類型[application/json]錯誤!請求正文不是Extjs Ajax請求的JSON格式問題

{"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 \」。 那麼有人可以幫我什麼想念。

+0

這與Ext無關,您的服務器響應它無法讀取JSON。 –

回答

1

錯誤消息不是ExtJS錯誤消息。如果您收到有關無效JSON的ExtJS的錯誤,它看起來就像這樣:

Uncaught Error: You're trying to decode an invalid JSON String: TestTest

我最好的猜測是錯誤消息來自服務器,因爲它需要你發送請求的JSON。現在你將它作爲FormData發送。發送請求的JSON,你必須把你的對象在jsonData配置和離開params配置未定義:

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

有關服務器 - 客戶端通信未來的問題,請記住,你應該首先檢查您的瀏覽器網絡選項卡發送給服務器的內容以及服務器的響應實際上是什麼。

+0

謝謝您的回覆先生。實際上,我使用chrome的rest客戶端插件檢查請求和響應...服務器正確地發送響應,正確地以json格式正確。但在Ajax請求的回調函數中,我們正在接收response.responseText as- Request Media Type [application/json]錯誤!請求正文不是JSON格式。這是奇怪的。如果在我要替換的請求參數中,ruleName從「Test1 \」改爲「Test1」,我能夠在回調中正確地獲得相應的響應。所以根據我,問題是因爲使用的特殊字符。我不知道爲什麼會發生。 – user1761116

+0

@ user1761116您可以製作[小提琴](https://fiddle.sencha.com/)嗎? – Alexander