1

ユーザーが返された検索結果のリスト内のリンクをクリックすると、それ自体に送信される HTML フォームを含むページがあります。ユーザーがリンクをクリックすると、ページは送信された変数を取得し、さまざまな外部 API で一連の検索を実行し、一連のデータを解析し、一連のデータをデータベースに追加してから、作成された新しいページにリダイレクトします。そのデータ。

すべての検索と解析には、最大で 6 ~ 7 秒かかる場合があります。すべての作業が舞台裏で行われている間、ユーザーに「お待ちください」のようなメッセージを表示できるようにしたいと考えています。

問題は、DIV の表示と非表示を切り替えることができないことです。

header('Location: ' . $newURL);

指図。私は答えを探し回りましたが、似たようなものはたくさんありますが、ハッキングできるほど私の特定の状況に近いものはありません。

誰かが私を正しい方向に向けることができれば幸いです。


以下の彼のコメントから@Izkataの厚意により、現在動作する更新バージョン:

jQuery("a").bind('click', function() {
  jQuery('#feedback')[0].innerHTML = 'Searching, please wait...';
})

私がしなければならないことは、送信がフォームデータを探していたので、「送信」ではなく、メッセージをリンクのクリックにバインドすることでした。

4

3 に答える 3

4

私が考えることができる最も簡単な方法は、サーバーが何もする必要はありません。

<div id='wait_message' style='display: none;'>
   Please wait while search is in progress...
</div>

...

$$('.links').observe('click', function(e) {
   $('wait_message').show();
});

(イベントは Prototype.js を使用して記述されます。適切なもの (JQuery/mootools/etc) を使用する必要があります)


コメントのサンプルページを使用すると、これは機能します - Firebug で実行されるため、ページのどこかに配置するだけで問題なく動作するはずです。

jQuery('#newMovieSearchForm').bind('submit', function() {
   jQuery('#feedback')[0].innerHTML = 'Searching, please wait...';
})

innerHTML を使用する代わりに jQuery を使用してテキストを更新する方法があると思われますが、私にはわかりません。ここでは jQuery を使用していません。

于 2012-10-11T15:48:25.510 に答える
1

そうです、データを画面に出力できず、後で PHP を使用してリダイレクトしようとすることはできません。これは、JS をエコーすることで実現できます。

echo 'Please wait...';
// Time-intensive PHP here
echo '<script>window.location = "new-location.php";</script>';
于 2012-10-11T15:48:00.700 に答える
0

次のようなことができます。

まず、出力のバッファリングに注意してください。つまり、php が実行時に出力を表示するようにしたい場合は、バッファリングしたくありません。

そうすれば、"loading.." のようなものを表示する html を出力できます。

そして、スクリプトが実行を終了するのを待ちます。

PHP の使用が完了したら、次のmetaようなタグを使用してリダイレクトします。

echo '<meta http-equiv="refresh" content="5;URL=\'http://example.com/\'">';
于 2012-10-11T15:51:00.397 に答える