重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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で
出力しているのですが他にもいい方法などアドバイスなどが
ありましたら教えて頂けますと非常に幸いです。

A 回答 (2件)

>headerinfomationエラーというものですよね?


>なのでjsで制御できないものかと質問しました。

できません。

詳細についてはマニュアルをご確認ください。
jsで制御・・・jsはheaderを受け取ったあとでの処理ですから
headerの得られていない時点でjsで制御できるはずがありません。
フローが理解されていないのであればここでいくら強調しても
無意味なのかもしれませんが・・・。

前回と内容がダブりますが
完了した場合には登録ページで「完了」と表示し
完了しなかった場合にはエラーページで「失敗」と表示する
ので十分です。

どうしてもアラートをだしてから処理をしたいということであれば
これも前回書いたとおり、アラート後にjavascriptでlocation.hrefを
書きかえれば次のページに移動します。
    • good
    • 0

アラートをだしたあとにPHPの分岐でheaderで別ページにとばしたいと


いうことですか?

ヘッダを理解していないですね?ヘッダはあらゆるの出力より前に
設定しなくては無効です。
スクリプトを書きこむということは出力していることですから、
そのあとにヘッダーで飛ばすことは無理です。
アラートを出してから飛ばすというフロー自体がどういう考えから生まれて
きたのかわかりませんが、意味のないことなのでやめましょう。
完了画面で、「登録が完了しました」と表示されればすむことですから

それでもどうしてもそういう流れにしたいなら、javascriptで
location.hrefをかきかえてみてください。
    • good
    • 0
この回答へのお礼

説明不足なようで申し訳ありませんでした・・・
headerinfomationエラーというものですよね?
なのでjsで制御できないものかと質問しました。

質問時にも書きましたが使用目的としては、データの更新など
同一ページで行った場合を想定しています。
書き込みが完了したら単純にphpのヘッダー関数で同ページに
飛ばせば更新データも反映されるかと思うのですが結果の
メッセージを表示させたくアラートと組み合わせしてうまく
でできないものかと考えておりました。

お礼日時:2008/08/31 06:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!