Hallo Ich versuche, eine Weiterleitung zu tun, wenn eine Antwort von einer Ajax-Anfrage erhalten wird. Aber irgendwie wird die windows.href.location nicht umleiten, bis der PHP-Hintergrundprozess bei der Verarbeitung abgeschlossen ist. Unten ist mein CodeJavascript wird nicht sofort nach Antwort umgeleitet
// The php script that run the background process
<?php
$background = new BackgroundProcess('email.php');
$background->run(); // The background process is running now
return $background->getPid(); // This returns immediately to the frontend
?>
Und das ist meine Ajax-Request jquery mit
$.ajax({
url: '/payment',
data:form.serialize(),
dataType: 'json',
success: function(txt){
if (txt.response == "ok"){
console.log("done redirecting now");
window.location.href = "/confirmation";
}else{
alert("failed process");
}
},
type: 'POST'
});
Nun ist die jetzt druckt auf der Konsole Umleitung fertig. Bedeutung eine Antwort erhalten wurde. Aber ich erwarte, die nächste Zeile auszuführen, die windows.href ist, aber das wird nicht ausgeführt, bis der Hintergrundprozess in meinem PHP-Skript abgeschlossen ist. Irgendeine Idee, wie man das löst?
Hinweis: Der PHP-Prozess ausgeführt wird seine ebenso erwartet, dass die JavaScript-Weiterleitung nicht sofort umleiten und wird für den PHP-Skript wartet
Vorausgesetzt, dass dieser Code im Callback ausgeführt wird, muss das PHP-Skript * die Antwort abgeschlossen und gesendet haben, damit die 'success' -Handlerfunktion aufgerufen wird. Es scheint wahrscheinlicher, dass es beim Laden der neuen Seite eher eine Verzögerung gibt als ein seltsames Verhalten, das sich aus der AJAX-Anfrage ergibt. –
Das ist, was ich vorher dachte, aber sobald der gesamte Hintergrundprozess mit dem Prozess abgeschlossen ist, in dem die Umleitung wirksam wird. Ich führe eine 100-E-Mail-Versand für diesen Prozess und ich protokolliere den Fortschritt in meiner Datenbank. Also nach Abschluss des Prozesses in der db, wenn die Seite umleitet –
Möglicherweise ein Server-Ladeproblem, wenn dieser Prozess wirklich intensiv ist – charlietfl