所以根据jQuery Ajax docs,它在发送请求时以查询字符串的形式序列化数据,但设置processData:false
应该允许我在主体中发送实际的JSON。不幸的是,我很难确定第一个,如果发生这种情况,第二个是什么对象看起来像是发送到服务器。我只知道服务器没有解析我发送的内容。jQuery在请求主体中发布有效的json
当使用http client发布对象文字{someKey:'someData'}
时,它可以工作。但是,当使用带有data: {someKey:'someData'}
的jQuery时,它失败。不幸的是,当我在Safari中分析请求时,它表示邮件有效负载为[object Object]
......很棒......并且在Firefox中该帖子是空白的......
当在Java端记录正文内容时,它实际上得到[object Object]
那么如何发送REAL JSON数据?
有没有人有过使用jQuery发送的请求在请求正文中序列化JSON数据的Java服务的经验?
BTW这里是满$就要求:
$.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'
});
所以我不再需要processData:false使用'JSON.stringify()'? – brad 2010-11-11 22:19:38
@brad - 正确,这样做后无所谓,因为它已经*了一个字符串,在这种情况下[jQuery不会进一步处理它](https://github.com/jquery/jquery/blob/ 1.4.3/SRC/ajax.js#L207)。 – 2010-11-11 22:23:30
像一个魅力工作,非常感谢!那么是否所有的请求体都是需要被解析的字符串呢? – brad 2010-11-12 14:28:38