sql >> データベース >  >> NoSQL >> MongoDB

フォーム送信後、NodeJSから同じhtmlページにデータを送り返します

    HTMLページにデータを送信することはできません。 HTMLは静的なファイル形式であり、それ自体でデータを受信することはできません。サーバーはHTMLファイルを作成できますが、できません。

    ただし、できることは、クライアント側で投稿リクエストをインターセプトし、 XHR クライアント側でデータを再度受信し、スクリプトがdatosを受信したときに必要な処理を実行します 。基本的に、ページのJavaScript部分と、POSTデータを受信して​​datosを送り返すノードサーバーとの間ですべてが発生します。 。

    クライアント側でPOSTリクエストをインターセプトする方法の簡単な例を次に示します。

    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:クライアント側のスクリプトのみが存在するため、上記のスニペットはネットワークエラーで失敗します-https://your-domain.com/path/to/apiでは何も実行されていません 、しかし、あなたはすでにあなたの質問に正しいサーバーコードを含めました。 res.send(datos)でサーバースクリプトを終了するだけです 。




    1. mongoスクリプトでのファイル書き込み操作?

    2. Rails3.2でMongoidを使用するときにdatabase.ymlを削除する

    3. SpringBootを使用したMongoDBの自動生成フィールド

    4. docker経由のMongoDBとDocker-認証エラーを作成し、dbを初期化しない