2011-02-07 9 views
1

私は人々がフォーム上でsubmitをクリックして、あるデータをチェックして新しいページ全体にリダイレクトするページをロードできるようにします。リダイレクトにはheader()を使うことができますが、ヘッダーは何もロードできません。ページ間の読み込みアニメーションが必要です。これを達成する最良の方法は何ですか? PHPでリダイレクトするにはPHPコードを実行して新しいページにリダイレクト

+0

あなたが必要とするのはAjaxです。 – yoda

+1

読み込みアニメーションを表示するのは、バックグラウンドで別のスレッドでデータを処理していて、完了するまで待つ必要がある場合のみです。通常のPOST /リダイレクト/ GETサイクルでは、これは非常に面倒であり、おそらく不要です。あなたは手術がそれほど長くかかりますか? – deceze

+1

技術的に言えば、正しいことですが、「読み込み中」のアニメーションが表示されている限り、何かが起こっていることをユーザーが確認できるのは常に良いことです。 「データが正常に送信されました」というメッセージはおそらく「データを送信しています...」よりも現実的ですが、有益な効果は最後に同じです。 – pdinklag

答えて

6

を使用しています。

このページは、あなたのフォームが送信したデータを処理し、素敵な「読み込み中の」テキストとアニメーションを表示し、しばらくすると別のページにリダイレクトします。これは、HTMLのメタを使用して行うことができる

あなた<head>になった、をリフレッシュし、次のようになります。

<meta http-equiv="refresh" content="3;url=anotherpage.php"> 

content属性がそこに面白いビットです。 3は3秒を意味し、anotherpage.phpは3秒後にリダイレクトされるサイトです。

+0

リフレッシュする前にコードを処理しますか? – shinjuo

+0

あなたのPHPコードは、クライアント側でリダイレクトされる前にサーバ側で実行されます。 – pdinklag

+0

サーバーとスクリプトによって異なります。データの処理を開始する前に、スクリプトがHTMLを出力するように注意する必要があります。多くのサーバーでPHP出力がバッファリングされ、スクリプトが終了すると送信されます。結果は、処理がすでに完了している場合にユーザーに「処理中」ページが表示されることになります。適切な処理ページを取得するには、出力バッファをフラッシュし、 "ignore_user_abort"を使用して、ユーザーがリダイレクトされたときにスクリプトが終了しないようにする必要があります。警告:PHP出力バッファをフラッシュしても、サーバ上に他のバッファが存在する可能性があります。 –

-3

、私は、フォームが別のページ(action="process.php"のようなもの)にそのデータを提出するだろうheader("Location: $url");

+7

header( 'Location:'。$ url); – yoda

1

代わりに、私は提出するページに最小限のJavascript効果を提案したいと思います。 onsubmit送信ボタンを無効にして、その近くにスピナーなどのアニメーションを表示します。「処理中...」メッセージを追加することもできます。ページは通常のPOST /リダイレクト/ GETサイクルを経ることができますが、中間ページを通過するよりも速く、ユーザーは何かが起こっていると感じています。

0

ヘッダはすでにこれは私が$ newLocationにブラウザを送信するために使用するPHP/JavaScriptコードで、その後送られてきた場合:

echo '<script language="javascript" type="text/javascript" >', PHP_EOL; 
echo '<!--', PHP_EOL; 
echo '  window.top.location.href = \'', $newLocation, '\'', PHP_EOL; 
echo '// -->', PHP_EOL; 
echo '</script>', PHP_EOL; 

私の場合、私はより多くのcontrolablyエラー状況から回復するためにそれを使用していますヘッダーが既に送信された後。

関連する問題