jQuery在请求体中发布有效的json

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

当使用http客户端发布对象字面量{someKey:'someData'}时,它是有效的。但是当jQuery与data: {someKey:'someData'}一起使用时,它会失败。不幸的是,当我在Safari中分析请求时,它说消息有效载荷是[object Object]…伟大的……在Firefox中,这篇文章是空白的…

当在Java端记录主体内容时,它字面上得到[object Object],所以如何发送真实JSON数据??

有人有使用Java服务在请求体中序列化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'
});
302498 次浏览

一个实际的JSON请求是这样的:

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

发送一个实际的JSON字符串。对于更通用的解决方案,使用JSON.stringify()将对象序列化为JSON,如下所示:

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

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


目前发生的情况是,由于你有processData: false,它基本上会发送这个:({"command":"on"}).toString(),它是[object Object]…你在你的请求中看到的。