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)
でサーバースクリプトを終了するだけです 。