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 № 1Nach 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!)