Du kan inte skicka data till en HTML-sida. HTML är ett statiskt filformat och kan inte ta emot data själv. En server kan, men inte en HTML-fil.
Vad du däremot kan göra är att avlyssna din inläggsbegäran på klientsidan, skicka den till klienten med XHR
och ta emot data på klientsidan igen, gör sedan vad du vill när skriptet tar emot datos
. I princip händer allt mellan JavaScript-delen av sidan och Node-servern som tar emot POST-data och skickar tillbaka datos
.
Här är ett enkelt exempel på hur du kan fånga POST-begäran på klientsidan:
document.querySelector('form').onsubmit = evt => {
// don't submit the form via the default HTTP redirect
evt.preventDefault();
// get the form values
const formData = {
name1: document.querySelector('input[name=name1]').value,
name2: document.querySelector('input[name=name2]').value
}
console.log('formData:', formData);
// send the form encoded in JSON to your server
fetch('https://your-domain.com/path/to/api', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(formData),
})
// receive datos from the server
.then(resp => resp.json())
.then(datos => {/* do what you want here */})
// catch potential errors
.catch(err => console.log('an error happened: '+err));
}
<form>
<input name="name1" value="value1">
<input name="name2" value="value2">
<button type="submit">Submit</button>
</form>
PS:Ovanstående kodavsnitt kommer att misslyckas med ett nätverksfel eftersom endast skriptet på klientsidan finns - det finns inget som körs på https://your-domain.com/path/to/api
, men du har redan inkluderat rätt serverkod i din fråga. Avsluta bara serverskriptet med res.send(datos)
.