在使用ajax向後臺傳送json資料,存在格式不正確的問題
阿新 • • 發佈:2019-01-04
在一次servlet伺服器的專案中,想在前臺使用json向後臺傳送請求,其中data的格式如下:
ajax傳送程式碼如下:var requestData = { "services": [{ "lightbulb" : [{"alpha":0}], "operation_status":[{"status":0}] }], "device_type": util.getQuery("device_type"), "device_id": util.getQuery("device_id"), "open_id": util.getQuery("open_id"), };
$.ajax({ url:'/panel/device', type:'GET', dataType:'json', data:requestData, success:function(data){ if('true' == data.flag){ console.log("申請資料成功:" + JSON.stringify(data)); //renderPage(data); } else{ console.log("申請回饋:" + JSON.stringify(data)); } }, error:function(data){ console.log("獲取資料失敗:" + JSON.stringify(data)); } });
在後臺servlet中使用getParameter方法獲取data,對於device_type,device_id和open_id的獲取沒有問題,但services竟然為null。
在檢視ParameterMap之後,發現我的json資料被解析成奇怪的資料:
{"services[lightbulb][alpha]":["0"],"services[operation_status][status]":["0"],"device_type":[""],"device_id":["gh_1eebc4626432_b3c36eb78c00a1d1"],"open_id":[""]}
這顯然存在瞭解析的錯誤。反覆檢查、修改requestData的格式,修改dataType以及ContentType均不奏效。後來,受網上啟發,將services部分單獨取出來,變成如下的形式:
var services = {
"lightbulb" : [{"alpha":0}],
"operation_status":[{"status":0}]
}
var requestData = {
"services": JSON.stringify(services),
"device_type": util.getQuery("device_type"),
"device_id": util.getQuery("device_id"),
"open_id": util.getQuery("open_id"),
};
結果成功解決了這一問題。雖說是解決了,但只是採用了繞開問題的方法,對於這個問題的發生表示不解,希望能有高手幫小生指點迷津。