这是调用的javascript函数:
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在里面提到这确实打印出正确的数据,这意味着问题似乎出在数据的传输方式上。
接收响应的 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 循环不打印任何内容。
如果我像这样使用 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 格式是问题所在。
蝴蝶不菲