第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何從 Golang 中的 javascript XMLHttpRequest 讀取 POST

如何從 Golang 中的 javascript XMLHttpRequest 讀取 POST

Go
侃侃爾雅 2022-12-13 16:15:53
這是調用的javascript函數(shù):function cwk_submit_form() {   var form = document.getElementById("FORM_ID")   var XHR = new XMLHttpRequest();   const FD = new FormData( form );   for (const element of FD.entries()) {       console.log(element)   }   XHR.open( "POST", "http://localhost:8080/post_data" );   XHR.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");   XHR.send( FD );}我console.log在里面提到這確實打印出正確的數(shù)據(jù),這意味著問題似乎出在數(shù)據(jù)的傳輸方式上。接收響應的 Golang 代碼是:func post_data(w http.ResponseWriter, r *http.Request) {    log.Println("post was called")    r.ParseForm()    for key, value := range r.Form {        log.Printf("%s = %s\n", key, value)    }}此 for 循環(huán)不打印任何內容。如果我像這樣使用 HTML 表單提交:<form action="//localhost:8080/post_data" method="POST">    <input type="text" name="field1" value="" maxLength="20"/>            <input type="text" name="field2" value="" maxLength="20"/>            <input type="submit" value="Sign in"/></form>然后上面的 Golang 代碼工作正常,這讓我相信 XMLHttpRequest 格式是問題所在。
查看完整描述

1 回答

?
蝴蝶不菲

TA貢獻1810條經(jīng)驗 獲得超4個贊

你猜對了,你的js代碼有問題。

對于所有請求,ParseForm 解析來自 URL 的原始查詢并更新 r.Form。

因此,當Content-Type您發(fā)送并且實際內容類型與application/x-www-form-urlencoded您的 HTML 表單案例中發(fā)生的匹配時,它將起作用。

另一方面,當您使用 時FormData,它將作為multipart/form-data.

您需要將您的替換XHR.send(FD)XHR.send(new URLSearchParams(FD))以發(fā)送數(shù)據(jù)application/x-www-form-urlencoded。


查看完整回答
反對 回復 2022-12-13
  • 1 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號