亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jQuery在請求正文中發布有效的json

jQuery在請求正文中發布有效的json

GCT1015 2019-11-11 15:27:10
因此,根據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'});
查看完整描述

2 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

實際的JSON請求如下所示:


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

發送實際JSON字符串的位置。對于更通用的解決方案,可使用JSON.stringify()將對象序列化為JSON,如下所示:


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

為了支持沒有該JSON對象的舊版瀏覽器,請使用json2.js來添加該對象。


目前正在發生的事情是因為您擁有processData: false,基本上是在發送此消息:({"command":"on"}).toString()即[object Object]您在請求中看到的內容。


查看完整回答
反對 回復 2019-11-11
?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

確,執行此操作后沒有關系,因為它已經是字符串,并且在這種情況下jQuery不會對其進行進一步處理

查看完整回答
反對 回復 2019-11-11
  • 2 回答
  • 0 關注
  • 395 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號