我正在嘗試將 JSON 參數(shù)發(fā)送到我的服務(wù)器并使用 json.Decoder 解析它們。我讀過您應(yīng)該能夠從 request.Body 屬性中獲取查詢參數(shù)。以下是我的服務(wù)器代碼:func stepHandler(res http.ResponseWriter, req *http.Request) { var v interface{} err := json.NewDecoder(req.Body).Decode(&v) if err != nil { // handle error } log.Println(v)}每次,我都會看到2014/12/26 22:49:23 <nil>(當然是差異時間戳)。我的客戶端 AJAX 調(diào)用如下:$.ajax({ url: "/step", method: "get", data: { steps: $("#step-size").val(), direction: $("#step-forward").prop("checked") ? 1 : -1, cells: JSON.stringify(painted) }, success: function (data) { painted = data; redraw(); }, error: function (xhr) { console.log(xhr); }});發(fā)送內(nèi)容的示例 URL:http://localhost:5000/?steps=1&direction=1&cells=%5B%7B%22row%22%3A11%2C%22column%22%3A15%7D%2C%7B%22row%22%3A12%2C%22column%22%3A15%7D%5D更好地查看參數(shù):{ steps: "1", direction: "1", cells: "[{"row":11,"column":15},{"row":12,"column":15}]"}我已經(jīng)嘗試過 GET 和 POST 請求。為什么我的 req.Body 從不解碼?如果我嘗試單獨打印 req.Body,我也會看到 nil。
2 回答

回首憶惘然
TA貢獻1847條經(jīng)驗 獲得超11個贊
req.Body
確實是空的——所以,我會調(diào)用它req.ParseForm()
然后使用它req.Form
。Body
不會獲得絕對不在請求正文中的內(nèi)容(例如查詢參數(shù))。

守著一只汪
TA貢獻1872條經(jīng)驗 獲得超4個贊
該Body
請求沿著有效載荷內(nèi)發(fā)送-它不是URL的一部分。
您正在嘗試訪問正文 .. 當您的數(shù)據(jù)確實在 URL 中時。
你想讓它改變你的 ajaxmethod: "get"
是什么method: "post"
- 以便數(shù)據(jù)與正文一起發(fā)布,而不是作為 URL 的一部分。您還應(yīng)該確保數(shù)據(jù)確實通過您選擇的瀏覽器的開發(fā)人員工具與請求一起發(fā)送?;蛘?,如果您確實希望將數(shù)據(jù)作為 URL 的一部分發(fā)送,您應(yīng)該訪問URL
請求的參數(shù) - 并手動將值解析為結(jié)構(gòu)(json 包不會為您執(zhí)行此操作 IIRC)。
- 2 回答
- 0 關(guān)注
- 382 瀏覽
添加回答
舉報
0/150
提交
取消