AJAX 呼び出しの成功コールバック内でリダイレクトする必要があります。
$.post("<receiver>", postdata, function() {
window.location.href = '...';
});
呼び出しの直後にアラートを配置するとコードが機能する理由$.post
は、このアラートがポップアップ表示されると、ブラウザーが実行を中断し、AJAX 呼び出しが完了するのに十分な時間があるためです。
AJAX の最初の A はAsynchronousを表すことを忘れないでください。これは、サーバーから返された結果のみを成功のコールバック内で使用できることを意味します。
また、この AJAX 呼び出しが.submit()
フォームのイベント ハンドラー内、.onclick()
または送信ボタンまたはアンカーのハンドラー内で実行される場合は、false を返すことによって既定のアクションをキャンセルしたことを確認する必要があります。そうしないと、AJAX 呼び出しを実行する時間がありません。ブラウザがページからリダイレクトされる前。
例:
$('#myForm').submit({
$.post("<receiver>", postdata, function() {
...
});
return false; // <!-- That's the important bit
});