javascript で POST する

 フォームを使わずにデータを POST したくて、javascript で POST してみました。次のような javascript になります。

<script> function post() { xhr = new XMLHttpRequest(); xhr.open('POST', '受け取るページ', true); xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); var request = "data=12345"; xhr.send(request); } </script>

 例えば、次のようなリンクで呼び出します。

<a href="別のページ" onclick="post(); return true;">送信</a>

 リンクがクリックされると「受け取るページ」に POST で data が渡されます。ただし、これはページにデータを送っただけです。実際に送られ、サーバ側で処理されますが、その結果は必要ないので受け取っていません。javascript で POST した時点でそのページの処理は終わっています。その後で、ページ遷移します。

 javascript で POST データを送り、そのページを開iいたとしても、開いたページ自体は、POST データのないページが開かれます。web でのデータのやり取りは単発です。サーバは、クライアントから要求があった場合、そのクライアントに応答したら、通信は切断します。データが有効なのは、そのやり取りの間だけなのです。同じページだとしても、javascript で POST データを送った時と、そのページを開いた時は別な接続として扱われます。どうしてもデータを保持したい場合は、セッションも使う必要があります。

2021.05.21 追記

続きの記事

web サイト

Posted by sirius