首页 文章

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

提问于
浏览
141

所以根据jQuery Ajax docs,它在发送请求时以查询字符串的形式序列化数据,但设置 processData:false 应该允许我在正文中发送实际的JSON . 不幸的是我'm having a hard time determining first, if this is happening and 2nd what the object looks like that is being sent to the server. All I know is that the server is not parsing what I'发送 .

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

在Java端记录正文内容时,它实际上得到 [object Object] 所以如何发送REAL JSON数据?

有没有人有过在请求体中序列化JSON数据的Java服务的经验,请求是从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'
});

1 回答

  • 232

    实际的JSON请求如下所示:

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

    您发送实际JSON字符串的位置 . 有关更通用的解决方案,请使用JSON.stringify()将对象序列化为JSON,如下所示:

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

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


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

相关问题