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]
…你在请求中看到的。