以下の私の質問を更新しました
ユーザーが大量のデータをインポートできるスクリプトを作成しました。フォームが送信され、データが検証された後、2 つのバックグラウンド タスクを追加します。1 つは、すべてのデータをインポートするスクリプトです。このスクリプトはまた、データベースに合計数と彼が実行した数を知らせます。2 つ目は、データベースからどれだけの処理が行われたかを読み取り、それを素敵なプログレス バーに表示するスクリプトです。
コード:
$.ajax({
type: "GET",
url: "import-process.php",
success: function(data) {}
});
var process = 0;
var checkPercentage = function() {
$.ajax({
type: "GET",
url: "get-process-status.php",
data: "importcode=123456",
success: function(data) {
if (!data.indexOf("ERROR") !== -1) {
process = data;
$("#process_balk").css('width', process + '%');
}
}
});
if (process != 100) {
setTimeout(checkPercentage, 1000);
} else {
window.location.href = "import-finished.php";
}
}
checkPercentage();
どちらのスクリプトも正常に動作します。ただし、最初のスクリプト (データのインポート) が完了した後、2 番目のスクリプト (プロセスのステータスを取得する) は開始されません。それは完全なものをちょっと役に立たなくします。
これを解決する方法はありますか?
更新: バックグラウンド プロセスが 1 回だけ呼び出されることがわかりました。それが問題です。私はそれを修正する方法がわからない..
var checkPercentage = function() {
alert("Is this function getting called every second?");
$.ajax({
type: "GET",
async: true,
url: "required/get-process-status.php",
data: "importcode=123456",
success: function(data) {
alert(data);
}
});
setTimeout(checkPercentage, 1000);
}
上記のコードは、「この関数は毎秒呼び出されていますか?」と警告します。一秒ごと。そうあるべきです。ただし、値「data」は一度だけ呼び出されます。それは私が期待したものではありません..何かアイデアはありますか?