こんにちは皆さん、スクリプト「sendeveryone.php」へのリンクを送信した後、このスクリプトが完了するまでにかなりの時間がかかるフォームがあります。そのため、読み込み中の画像を表示したいのですが、どうすればこれを達成できますか?
ありがとう
送信時に、javascript を使用して読み込み中の画像を表示できます。onclick="showLoading()"
属性を送信ボタンに入れ、showLoading() JavaScript 関数を作成します。
2 つのオプションがあります: ajax でスクリプトを呼び出し、進行状況を示すクライアント側でいくつかの js を実行するか、php で応答を返し、次のスニペットで実行を続けることができます
/*
* basically allow a php script to return a response and continue with
* code execution, good for statistics.
* before echo anything to user call begin and after call end, than you can continue doing stuff
*/
class ScriptContinuationManager
{
/**
* this is the point where we need to give a sign to this class
* that we wanna write our response.
* @return void
*/
public function beginRespone()
{
ob_end_clean();
header("Connection: close");
ignore_user_abort(); // optional
ob_start();
}
/*
* after this function execution the response will be sent to the
* client, and code continue without client need to wait.
*/
public function endResponse()
{
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush(); // Strange behaviour, will not work
flush(); // Unless both are called !
}
}
JavaScript ソリューションを試してください:
これにより、送信ボタンが非表示になり、画像が表示されます。読み込みイメージを自分で選択する必要があります。 http://ajaxload.info/で生成できます。また、フォームに ID 属性を与え、それをスクリプトに入れる必要があります。
(jQueryが含まれていることを確認してください)
var formid = ''; // What is the ID of the form? (without the #)
var imgpath = ''; // What is the path to the loading image you want to display?
$(document).ready(function(event){
$('#'+ formid).submit(function(event){
$('#'+ formid +' input[type=submit]').after('<img src="'+ imgpath +'">').hide();
});
});
編集: また、AJAX メソッドを使用することをお勧めしますが、投稿の文体を見ると、それほど高度ではないと思います。