2017-05-07 12 views
1

以下の問題はSafariでのみ発生します。 Chrome、Opera、IEはすべて正常に動作します。 私が試してみました:jQueryのajax/postのリクエストが変更されたページの変更

function do(x){ 
    $.ajax({url: "next.php", 
    type: "POST", 
    data: {'cand': x}, 
    success: leave()}); 
} 
function leave(){window.location = "next.php";} 

この:

$.post("next.php", {'cand': x}); 
    window.location = "next.php"; 

そして、上記の他の二つの組み合わせを同様。私は、私がページを離れないと、Ajax/Postリクエストはどちらも動作することに気がつきました。しかし、私がページを出ると、彼らはいなくなりました。私が意味することは、window.locationコマンドを使用することです。のように、ユーザーはページを離れますが、投稿要求は機能しません。再び、のみがSafariで発生します。私はすぐに私の前でSafariのブラウザを持っていないので、私は完全にそれをテストすることはできません。

何か手掛かりがある人は、私に何が起こっているかを教えてもらえますか?

答えて

0

success: leave()(最初の例のように)leaveの機能はすぐに評価され、位置の変更は同時にajax呼び出しで行われます。一部のブラウザはajax呼び出しを完了しますが、一部のブラウザは終了しません。

代わりに、success: leaveを入力してください。これは、 ajax呼び出しの後にleave関数を呼び出します。

0

ここでfunction()はPHPの実行が完了した後にのみ呼び出されるため、以下を試すことができます。あなたの場合、Ajaxが完了する前にコールバックが実行されている可能性があります。その場合は、ちょっとした工夫をしてsetTimeout()を使用して、少し待ってから離れることができます。

$.post('next.php', {cand: x}, function() { 
    // Callback function: called after php script is completed 
    // setTimeout waits 500ms before leaving 
    setTimeout(function(){ 
     leave(); 
    }, 500); 
}) 
関連する問題