jQuery在请求正文中发布有效的json

所以根据jQuery的Ajax文档 ,它在发送请求时以查询string的forms序列化数据,但是设置processData:false应该允许我在实体中发送实际的JSON。 不幸的是我很难确定第一,如果这是发生,第二什么样的对象看起来是发送到服务器。 我只知道服务器没有parsing我发送的内容。

当使用http客户端发布对象文字{someKey:'someData'} ,它就可以工作。 但是,当使用jQuery与data: {someKey:'someData'} ,它失败。 不幸的是,当我在Safari中分析请求时,它说消息有效载荷是[object Object] …很好,而在Firefox中,这个post是空白的。

当在Java端logging正文内容时,它实际上得到[object Object]那么如何发送REAL JSON数据呢?

有没有人有一个Java服务序列化请求正文中的JSON数据的经验,从jQuery发送请求?

BTW这里是完整的$ .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' }); 

实际的JSON请求如下所示:

 data: '{"command":"on"}', 

你在哪里发送一个实际的JSONstring。 对于更一般的解决scheme,使用JSON.stringify()将对象序列化为JSON,如下所示:

 data: JSON.stringify({ "command": "on" }), 

要支持没有JSON对象的旧浏览器,请使用将添加它的json2.js 。


现在发生的事情是因为你有processData: false ,它基本上发送这个: ({"command":"on"}).toString()这是[object Object] …你在请求中看到的。