首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery在请求正文中发布有效的json

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

Stack Overflow用户
提问于 2010-11-12 06:02:05
回答 1查看 275K关注 0票数 201

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

当使用http client发布对象文字{someKey:'someData'}时,它可以工作。但是,当在data: {someKey:'someData'}中使用jQuery时,它会失败。不幸的是,当我在Safari中分析请求时,它告诉我消息有效负载是[object Object]……很好..。而在Firefox中,帖子是空白的。

当在Java端记录正文内容时,它从字面上获得[object Object],那么如何发送真正的JSON数据呢?

有没有人有过使用jQuery发送的请求在请求体中序列化JSON数据的经验?

顺便说一下,下面是完整的$.ajax请求:

代码语言:javascript
复制
$.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'
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-12 06:06:01

实际的JSON请求将如下所示:

代码语言:javascript
复制
data: '{"command":"on"}',

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

代码语言:javascript
复制
data: JSON.stringify({ "command": "on" }),

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

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

票数 322
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4159701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档