写真を扱う長いPHPスクリプトを実行しているときに、私のAjaxプログレスバーに関するアドバイスが必要です。 私は私が見るほとんどの例では、計算にファイルサイズを使用している jQuery ajax進捗状況カスタム計算
)の質問の多くは、すでに
- Show progress for long running PHP script
- またはJQuery ajax progress via xhr
- またはupdate progress bar using ajax request secondsようstackoverflowの上がいることを知っています進捗。 私の場合、
images_treated/total_images
に基づいてパーセンテージを計算したいと思います。だから私は今でも私が望むようにこの仕事をすることはできません。
JSでは、私は別の質問から取った作業の進捗関数ではなく、
dataType: 'json'
のテストではコメントしましたが、私はまだJSONリターンを使用できるのが好きです。質問
- にconsole.log()一度だけ記録します - 完全なスクリプトが実行されたとき。私はそれを間違っているのですか?
- コメントを置き換えるにはどうすればよいですか?
- いくつかの回答では、PHPヘッダはheader( 'Content-Type:application/octet-stream')に設定されています。それは必須か、それともちょっといいですか?
Javascriptを:写真上のループで、私は変数を持ってい
$images_treated
と$total_images
:$.ajax( { type: 'GET', // dataType: 'json', url: formAction, data: 'addImagesToArticle', cache: false, xhr: function() { var xhr = new window.XMLHttpRequest(); // Download progress. xhr.addEventListener("progress", function(e) { console.log(e); // I saw this piece of code from another question it is supposed to work... Maybe my PHP? /*var lines = e.currentTarget.response.split("\n"); var progress = lines.length ? lines[lines.length-1] : 0; $('#progress').text(progress);*/ }, false); return xhr; } });
私のPHPはので、私はちょうどすぐに説明かなり大きいです。ループの後に、
{error: bool, message: string, ...}
のようなオブジェクトにJSONを介してJSに要約が返されます。そのため、エコーすることなく進行状況を確認する方法があれば完璧なJSON変数を設定することができます。ありがとうございました!
[EDIT]文脈の詳細を追加します。
管理者側でこれを使用したいと思っています.WYSIWYGの記事版では、私は複数の画像をアップロードするためにdropzoneを持っています。
次に、各画像がサーバーの一時フォルダに置かれている間に、画像のプレビューが表示されます。次に、必要に応じていくつかの画像を削除して、すべての画像が確定したら、WYSIWYGエディタの記事で2つのサイズのサイズを変更し、Figureタグをimgで挿入するボタンをクリックします。
AJAXリクエストとそのリクエストに対応するためにサーバー上で行われた作業は、処理された単一のエンティティです。これは、 'progress'イベントからサーバが何をしているのか分かりません。どれだけのデータが送受信されたのか分かりません。サーバが取得したステップの進捗状況を知りたい場合は、最後に完了したタスクをエンドポイントに格納するようにサーバをコーディングする必要があります。このタスクは、AJAXの2番目の要求から到達可能で、が走っています。 –
はい、あなたが理解していれば、進捗状況を送信するために2番目のPHPが必要なので、必要に応じて進行状況をセッションに保存できます。しかし、私はどのようにJSファイルの1つのAJAXから両方のPHPスクリプトに質問しますか? – antoni
あなたが達成しようとしていることは、あなたのアプローチとは少し違うと思います。ここでこのトピックについて[質問](http://stackoverflow.com/a/18964123/6565883)を見つけることができます。処理のステータスをサーバー側から印刷することができます。それが役に立てば幸い。 – Riccardo