Du kan ikke sende data til en HTML-side. HTML er et statisk filformat og kan ikke modtage data af sig selv. En server kan, men ikke en HTML-fil.
Hvad du dog kan gøre, er at opsnappe din postanmodning på klientsiden, sende den til klienten ved hjælp af XHR
og modtagelse af data på klientsiden igen, og gør derefter hvad du vil, når scriptet modtager datos
. Grundlæggende sker alt mellem JavaScript-delen af siden og Node-serveren, der modtager POST-data og sender datos
tilbage .
Her er et simpelt eksempel på, hvordan du kan opsnappe POST-anmodningen på klientsiden:
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:Ovenstående kodestykke vil mislykkes med en netværksfejl, fordi kun scriptet på klientsiden er til stede - der kører ikke noget på https://your-domain.com/path/to/api
, men du har allerede inkluderet den rigtige serverkode i dit spørgsmål. Afslut bare serverscriptet med res.send(datos)
.