因此,根據jQuery Ajax文檔,它在發送請求時以查詢字符串的形式序列化數據,但是設置processData:false應允許我在正文中發送實際的JSON。不幸的是,我很難首先確定是否發生這種情況,其次是將對象的外觀發送給服務器。我所知道的是服務器未解析我正在發送的內容。使用http客戶端發布對象文字時{someKey:'someData'},它可以工作。但是,當使用帶有的jQuery時data: {someKey:'someData'},它將失敗。不幸的是,當我在Safari中分析請求時,它說消息有效負載是[object Object]……很好……而在Firefox中,該帖子是空白的……當在Java端記錄主體內容時,它實際上得到了,[object Object]因此如何發送REAL JSON數據?有沒有人有過使用Java服務在jQuery中發送請求時對請求正文中的JSON數據進行序列化的經驗?順便說一句,這里是完整的$ .ajax請求:$.ajax({ contentType: 'application/json', data: { "command": "on" }, dataType: 'json', success: function(data){ app.log("device control succeeded"); }, error: function(){ app.log("Device control failed"); }, processData: false, type: 'POST', url: '/devices/{device_id}/control'});
2 回答

白衣染霜花
TA貢獻1796條經驗 獲得超10個贊
實際的JSON請求如下所示:
data: '{"command":"on"}',
發送實際JSON字符串的位置。對于更通用的解決方案,可使用JSON.stringify()將對象序列化為JSON,如下所示:
data: JSON.stringify({ "command": "on" }),
為了支持沒有該JSON對象的舊版瀏覽器,請使用json2.js來添加該對象。
目前正在發生的事情是因為您擁有processData: false,基本上是在發送此消息:({"command":"on"}).toString()即[object Object]您在請求中看到的內容。
- 2 回答
- 0 關注
- 395 瀏覽
添加回答
舉報
0/150
提交
取消