因此,根據(jù)jQuery Ajax文檔,它在發(fā)送請求時以查詢字符串的形式序列化數(shù)據(jù),但是設(shè)置processData:false應(yīng)允許我在正文中發(fā)送實際的JSON。不幸的是,我很難首先確定是否發(fā)生這種情況,其次是將對象的外觀發(fā)送給服務(wù)器。我所知道的是服務(wù)器未解析我正在發(fā)送的內(nèi)容。使用http客戶端發(fā)布對象文字時{someKey:'someData'},它可以工作。但是,當(dāng)使用帶有的jQuery時data: {someKey:'someData'},它將失敗。不幸的是,當(dāng)我在Safari中分析請求時,它說消息有效負(fù)載是[object Object]……很好……而在Firefox中,該帖子是空白的……當(dāng)在Java端記錄主體內(nèi)容時,它實際上得到了,[object Object]因此如何發(fā)送REAL JSON數(shù)據(jù)?有沒有人有過使用Java服務(wù)在jQuery中發(fā)送請求時對請求正文中的JSON數(shù)據(jù)進(jìn)行序列化的經(jīng)驗?順便說一句,這里是完整的$ .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貢獻(xiàn)1796條經(jīng)驗 獲得超10個贊
實際的JSON請求如下所示:
data: '{"command":"on"}',
發(fā)送實際JSON字符串的位置。對于更通用的解決方案,可使用JSON.stringify()將對象序列化為JSON,如下所示:
data: JSON.stringify({ "command": "on" }),
為了支持沒有該JSON對象的舊版瀏覽器,請使用json2.js來添加該對象。
目前正在發(fā)生的事情是因為您擁有processData: false,基本上是在發(fā)送此消息:({"command":"on"}).toString()即[object Object]您在請求中看到的內(nèi)容。

慕的地8271018
TA貢獻(xiàn)1796條經(jīng)驗 獲得超4個贊
確,執(zhí)行此操作后沒有關(guān)系,因為它已經(jīng)是字符串,并且在這種情況下jQuery不會對其進(jìn)行進(jìn)一步處理
- 2 回答
- 0 關(guān)注
- 389 瀏覽
添加回答
舉報
0/150
提交
取消