こんにちは私は、ajaxリクエストからの応答が受信された場合にリダイレクトを試みています。しかし、何らかの形でwindows.href.locationは、PHPバックグラウンドプロセスが処理を完了するまでリダイレクトされません。以下は、私のコードは応答の直後にJavascriptがリダイレクトされない
// 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
?>
であり、これはjQueryの今は今、コンソール上プリントをリダイレクト行わ
$.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'
});
を使用して、私のAJAX要求です。応答が受信されたことを意味します。しかし、私はwindows.hrefの次の行を実行することを期待していますが、これは私のPHPスクリプトのバックグラウンドプロセスが完了するまで実行されません。どのようにこれを解決するための任意のアイデアですか?
注:そのJavaScriptのリダイレクトがすぐにリダイレクトしていないとすぐにリダイレクトが発生しないwindow.location.href
に割り当て
そのコードがコールバックで実行されると、PHPスクリプト*は完了し、呼び出される 'success'ハンドラ関数の応答を送信しなければなりません。 AJAXリクエストに起因する奇妙な振る舞いではなく、新しいページの読み込みが遅れている可能性が高いようです。 –
これは私が以前考えたことですが、すべてのバックグラウンドプロセスがリダイレクトが有効になるプロセスで完了するとすぐにです。私はこのプロセスのために100の電子メールを送信しており、私はdbの進捗状況を記録しています。したがって、ページがリダイレクトされているときにdb内のプロセスを完了すると、 –
そのプロセスが本当に集中しているとサーバー負荷の問題が発生する可能性があります。 – charlietfl