sql >> Databasteknik >  >> NoSQL >> MongoDB

Skicka data från NodeJS tillbaka till samma HTML-sida efter formuläret

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




  1. PyMongo -- marköriteration

  2. MongoDB Object.bsonSize()

  3. Mongoose kapslade schema kontra kapslade modeller

  4. Ansluter till Redis To Go med PHP