MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Renvoyer les données de NodeJS à la même page html après la soumission du formulaire

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) .