[英]Sending Data via XMLHTTPRequest does not work on Webserver
我正在尝试通过 XMLHTTPRequest 从网络服务器上的 html 文件向 Node Express 服务器发送一些关于用户的数据(在本例中只是名字和姓氏)。 它在本地服务器上运行良好,我只是无法让它在网络服务器上运行。 这是我的 html 的关键部分:
<br>
<div class="textbold">First Name</div>
<input name="fn" id= "first"><p>
<div class="textbold">Last Name</div>
<input name="ln" id="last"><p>
<br>
<input type="button" class="button" onclick="request()" value="Send">
<script>
function request() {
var firstname = document.getElementById("first").value
var lastname = document.getElementById("last").value
var xhr = new XMLHttpRequest()
xhr.open('GET', "http://urlofmywebbrowser.com/request")
xhr.setRequestHeader("Content-Type", "multipart/form-data");
xhr.send("firstn="+firstname+"&lastn="+lastname)
}
</script>
这是快递服务器的脚本:
var express = require('express')
var app = express()
var port = 3000
app.get("/request", function (req) {
let firstname = req.query.firstn
let lastname = req.query.lastn
console.log(vorname, nachname)})
然后脚本继续将数据保存到 json 文件中,该文件在我的本地服务器上再次正常工作,但我无法在网络服务器上对其进行测试。 我认为可能的错误可能与 URL 或端口号有关,但我尝试了各种组合,但无法正常工作。 在此先感谢您的帮助!
HTTP 请求可以包含以下数据:
如果您正在发出 GET 请求,那么它必须在 URL 的查询字符串中包含 go。
您正在将它传递给send()
,后者将其放入正文中。 这是不允许的,因此将被忽略。
如果将它放在正文中(这意味着更改为 POST 请求),则需要使Content-Type
与您正在使用的数据格式相匹配。
您正在使用application/x-www-form-urlencoded
但声称您正在发送multipart/form-data
。
如果你把它放在正文中(见上文),那么 Express 要求你从req.body
而不是req.query
中读取它。
它还需要您添加合适的正文解析中间件。
您需要不要忘记"
结束字符串文字
您不应该将字符串混合在一起来构造数据格式。 这无法处理输入中的特殊字符。 使用将为您构建它们的 API。
假设您正在尝试发出 GET 请求:
删除xhr.setRequestHeader("Content-Type", "multipart/form-data");
和
xhr.send("firstn="+firstname+"&lastn="+lastname)
更改为xhr.send()
和
改变:
xhr.open('GET', "http://urlofmywebbrowser.com/request")
到
const url = new URL("http://urlofmywebbrowser.com/request");
url.searchParams.append("firstn", "firstname");
url.searchParams.append("lastn", "lastname");
xhr.open('GET', url);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.