- 締切済み
アラートについて
PHPでフォームを作っており送信または登録が完了したらアラートで メッセージを出力するいうものをつくりました。 例としてmysqlに登録完了したらアラートを出すという抜粋です。 if (PEAR:: isError($res)) { die($res->getMessage()); } else { echo "<script type='text/javascript'>"; echo "alert('登録完了');"; echo "</script>"; } これで動作は問題ないのですがアラートが表示されOKボタンを クリックしたらheaderlocationで指定のURLに飛ばすということは js側で制御できないものでしょうか? 使用目的としては、データの更新など同一ページで行った場合 アラートが表示されOKボタンをクリックしてもブラウザを更新 しなければデータが反映表示されないためです。 phpでアラートの後にheaderlocationをやるとページ移管は するもののアラートが表示されず困っております。 jsについてはほぼ無知なもので簡単なことなのかもしれないの ですが方法がわかりません。 フォームは複数ありアラートを表示させたい全ての箇所にechoで 出力しているのですが他にもいい方法などアドバイスなどが ありましたら教えて頂けますと非常に幸いです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
>headerinfomationエラーというものですよね? >なのでjsで制御できないものかと質問しました。 できません。 詳細についてはマニュアルをご確認ください。 jsで制御・・・jsはheaderを受け取ったあとでの処理ですから headerの得られていない時点でjsで制御できるはずがありません。 フローが理解されていないのであればここでいくら強調しても 無意味なのかもしれませんが・・・。 前回と内容がダブりますが 完了した場合には登録ページで「完了」と表示し 完了しなかった場合にはエラーページで「失敗」と表示する ので十分です。 どうしてもアラートをだしてから処理をしたいということであれば これも前回書いたとおり、アラート後にjavascriptでlocation.hrefを 書きかえれば次のページに移動します。
- yambejp
- ベストアンサー率51% (3827/7415)
アラートをだしたあとにPHPの分岐でheaderで別ページにとばしたいと いうことですか? ヘッダを理解していないですね?ヘッダはあらゆるの出力より前に 設定しなくては無効です。 スクリプトを書きこむということは出力していることですから、 そのあとにヘッダーで飛ばすことは無理です。 アラートを出してから飛ばすというフロー自体がどういう考えから生まれて きたのかわかりませんが、意味のないことなのでやめましょう。 完了画面で、「登録が完了しました」と表示されればすむことですから それでもどうしてもそういう流れにしたいなら、javascriptで location.hrefをかきかえてみてください。
お礼
説明不足なようで申し訳ありませんでした・・・ headerinfomationエラーというものですよね? なのでjsで制御できないものかと質問しました。 質問時にも書きましたが使用目的としては、データの更新など 同一ページで行った場合を想定しています。 書き込みが完了したら単純にphpのヘッダー関数で同ページに 飛ばせば更新データも反映されるかと思うのですが結果の メッセージを表示させたくアラートと組み合わせしてうまく でできないものかと考えておりました。