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

因此,根据jQuery Ajax文档,它在发送请求时以查询字符串的形式序列化数据,但是设置processData:false应允许我在正文中发送实际的JSON。不幸的是,我很难首先确定是否发生这种情况,其次是将对象的外观发送给服务器。我所知道的是服务器未解析我正在发送的内容。


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


当在Java端记录主体内容时,它实际上得到了,[object Object]因此如何发送REAL JSON数据?


有没有人有过使用Java服务在jQuery中发送请求时对请求正文中的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'

});


GCT1015
浏览 372回答 2
2回答

白衣染霜花

实际的JSON请求如下所示:data: '{"command":"on"}',发送实际JSON字符串的位置。对于更通用的解决方案,可使用JSON.stringify()将对象序列化为JSON,如下所示:data: JSON.stringify({ "command": "on" }),为了支持没有该JSON对象的旧版浏览器,请使用json2.js来添加该对象。目前正在发生的事情是因为您拥有processData: false,基本上是在发送此消息:({"command":"on"}).toString()即[object Object]您在请求中看到的内容。

慕的地8271018

确,执行此操作后没有关系,因为它已经是字符串,并且在这种情况下jQuery不会对其进行进一步处理
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JQuery