/ / Verwenden Sie Ajax, um den Fortschritt eines PHP-Skripts anzuzeigen, das von einer anderen Ajax-Anforderung aufgerufen wird - php, ajax, get, progress, simultan

Verwenden Sie Ajax, um den Fortschritt eines PHP-Skripts anzuzeigen, das von einer anderen Ajax-Anfrage aufgerufen wird - php, ajax, get, progress, simultan

Ich mache einen jQuery Ajax-Aufruf für ein PHP-Skript, dasläuft eine anständige Zeit (zwischen 1 Sekunden und 3 Minuten). Es protokolliert ständig einen Fertigstellungsgrad in einer Datenbank. Wie kann ich kontinuierlich eine weitere Ajax-Anforderung gleichzeitig ausführen, um den vollständigen Prozentsatz aus der MySQL-Datenbank an den Benutzer zu melden?

BEARBEITEN Ich verstehe, wie man ein separates PHP-Skript verwendet, um die Datenbank abzufragen, daher ist meine Frage mehr, wie die JavaScript- und Ajax-Aufrufe eingerichtet werden

Antworten:

6 für die Antwort № 1

Nach Ihrem AJAX-Anruf zum Starten Ihres ProzessesSie können einen weiteren AJAX-Aufruf in einer Schleife durchführen, der den aktuellen Prozentsatz abfragt, zurückgibt und bis zum Wert von 100% anzeigt. Grundsätzlich ist ein AJAX-Aufruf zur Einleitung des Prozesses und dann eine Reihe von Aufrufen erforderlich, die den Status prüfen.

Update: Hier ist ein einfaches JavaScript, um das zu erreichen, was Sie möchten:

<script>
function startProcess() {
//start your long-running process
$.ajax(
{
type: "GET",
url: "/longRunningProcess",
async: true,
success:
function (data) {
//do something - your long process is finished
}
});
}
function getStatus() {
//check your progress
$.ajax(
{
type: "GET",
url: "/checkProgress",
async: true,
success:
function (data) {
//assume the data returned in the percentage complete
var percentage = parseInt(data);

//write your status somewhere, like a jQuery progress bar?

if (percentage < 100) {
//if not complete, check again
getStatus();
}
}
});
}


0 für die Antwort № 2

Sie benötigen wahrscheinlich eine andere URL, um das aufzurufenUmfragen werden von der Datenbank abgerufen. Anders ausgedrückt, ein anderes PHP-Skript, das den Fortschritt meldet. Der Ajax-Aufruf verwendet wahrscheinlich eine Zeitüberschreitung oder das, was jQuery benötigt, um sich periodisch einzuplanen (bis der Server-Aufruf den Abschluss meldet).

Denken Sie daran, Ausnahmefälle zu behandeln, bei denen die serverseitige Verarbeitung stirbt (und somit niemals abgeschlossen wird!)