MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Senden Sie Daten von NodeJS nach dem Absenden des Formulars an dieselbe HTML-Seite zurück

Sie können keine Daten an eine HTML-Seite senden. HTML ist ein statisches Dateiformat und kann selbst keine Daten empfangen. Ein Server kann das, aber keine HTML-Datei.

Was Sie jedoch tun können, ist Ihre Post-Anforderung auf der Client-Seite abzufangen und sie mit XHR und die Daten auf der Client-Seite wieder zurückerhalten, dann tun Sie, was Sie wollen, wenn das Skript datos empfängt . Grundsätzlich passiert alles zwischen dem JavaScript-Teil der Seite und dem Node-Server, der POST-Daten empfängt und datos zurücksendet .

Hier ist ein einfaches Beispiel dafür, wie Sie die POST-Anfrage auf der Client-Seite abfangen können:

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:Das obige Snippet schlägt mit einem Netzwerkfehler fehl, da nur das clientseitige Skript vorhanden ist - unter https://your-domain.com/path/to/api läuft nichts , aber Sie haben in Ihrer Frage bereits den richtigen Servercode angegeben. Beenden Sie einfach das Serverskript mit res.send(datos) .