Estoy tratando de pasar múltiples parámetros a través de un formulario HTML en un XMLHttpRequest. La solicitud toma un SSID y un PSK de red y lo pasa al punto final /connect .
Funciona cuando codifico el SSID y PSK usando:
var data = '{"ssid":"homenetwork", "psk":"mypassword"}'; xhr.send(data); Cuando intento extraer los datos del formulario HTML, obtengo net::ERR_EMPTY_RESPONSE en Chrome.
<!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> La línea var data = que saqué de esta pregunta de StackOverflow .
Gracias por adelantado.
La variable de datos que está utilizando debe ser un objeto JSON. En su ejemplo aquí es una cadena, por lo que los valores individuales no se pasan, solo una sola cadena.
Probar:
var data = `{"ssid": "${network}", "psk": "${presharedkey}"}`;[EDITAR] Parece que no entendí bien la pregunta original. OP está tratando de enviar los datos como un objeto JSON pero no sabe cómo formatearlo (afirman que pasar manualmente la cadena de variables funciona).