Vous ne pouvez pas envoyer de données à une page HTML. HTML est un format de fichier statique et ne peut pas recevoir de données par lui-même. Un serveur le peut, mais pas un fichier HTML.
Ce que vous pouvez faire cependant, c'est intercepter votre demande de publication côté client, l'envoyer au client en utilisant XHR
et recevoir à nouveau les données côté client, puis faites ce que vous voulez lorsque le script reçoit datos
. En gros tout se passe entre la partie JavaScript de la page et le serveur Node qui reçoit les données POST et renvoie les datos
.
Voici un exemple simple de la façon dont vous pouvez intercepter la requête POST côté client :
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 :L'extrait ci-dessus échouera avec une erreur réseau car seul le script côté client est présent - il n'y a rien en cours d'exécution sur https://your-domain.com/path/to/api
, mais vous avez déjà inclus le bon code de serveur dans votre question. Terminez simplement le script du serveur par res.send(datos)
.