我试图通过HTML表单将多个参数传递到一个XMLHttpRequest中。该请求采用网络SSID和PSK,并将其传递给/connect
端点。
当我使用以下方法硬编码SSID和PSK时,它可以工作:
var data = '{"ssid":"homenetwork", "psk":"mypassword"}';
xhr.send(data);
当我试图从HTML表单中提取数据时,我会得到Chrome格式的net::ERR_EMPTY_RESPONSE
。
<!DOCTYPE html>
<html>
<br>
<label for="network">Network Name (SSID):</label>
<input type="text" id="network" name="network" required size="15">
<label for="presharedkey">Network Password (PSK): </label>
<input type="text" id="presharedkey" name="presharedkey" required size="15">
<button onclick="connectWifi()">Save</button> <br>
<script>
function connectWifi() {
var network = document.getElementById("network") .value;
var presharedkey = document.getElementById("presharedkey") .value;
var url = "http://192.168.0.236:8080/connect";
var xhr = new XMLHttpRequest();
xhr.open("POST", url);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
console.log(xhr.status);
console.log(xhr.responseText);
}};
// var data = '{"ssid":"homenetwork", "psk":"mypassword"}';
var data = 'ssid='+network+'&psk='+presharedkey;
xhr.send(data);
}
</script>
</html>
我从var data =
上拔出的那条线。
提前谢谢。
发布于 2022-01-03 06:22:31
您使用的数据变量需要是JSON对象。在这里的示例中,它是一个字符串,因此不传递单个值,只传递一个字符串。
尝试:
var data = `{"ssid": "${network}", "psk": "${presharedkey}"}`;
编辑我误解了原来的问题。OP试图将数据作为JSON对象发送,但不知道如何格式化它(他们声称手动传递变量字符串有效)。
https://stackoverflow.com/questions/70567125
复制相似问题