興味本位で作ってるphpの投稿フォームでちょっとはまる
動きとしては
- 送信が完了したらそのむねのメッセージをポップアップ
- そのあとトップページに移動
ということをさせたい
で、最初に書いたのが下
function alert($str){$msg = ‘<script type=”text/javascript”>’;$msg .= “alert(‘$str’)”;$msg .= ‘</script>’;echo $msg;}alert(“送信完了”);header(‘Location: top.html’);
結果は期待に反して top.htmlにページ移動するだけ
いろいろ調べてると原因判明
つまり、ブラウザからのリクエストに対し、サーバー側でPHPを処理し、その結果をブラウザに返すが、このとき、ブラウザで処理されるjavascriptはまだ実行されていないからPHPのheaderが優先されて、結果としてtopページに移動しただけになるのね
んー、今までもやっとしか理解していないことがよくわかったw
やっぱ、自分で作ってみるといろいろと勉強になるね
とりあえず、直し方はいろいろあるだろうけど
function alert($str){$msg = ‘<script type=”text/javascript”>’;$msg .= “alert(‘$str’)”;$msg .= ‘</script>’;$msg .= ‘window.location.href = “top.html”;’;echo $msg;}
こんな感じでTOPページへの移動をjavascriptで処理。うーん、ファンクションに入れちゃうのは美しくない気がする・・・
でも、とりあえず、ポップアップが出てそのあとtopページに戻るようになった
プログラマーの人は大変だね