1
function f(){
$.post('1.php',{},function(){window.location.href="../../2.php";});
}

ボタンをクリックすると、関数 f が実行されます。上記のコードは正しく実行され、目的の関数を実現できます。ただし、コードが次の形式に変わると、次のようになります。

function f(){
$.post('1.php',{},function(){});
window.location.href="../../2.php";
}

ajaxリクエストが機能しません.Javascriptのロード順序に関係があることは知っていますが、深いレベルで明確にしたいと思います.私を助けて詳細に説明してくれてとてもうれしいです.ありがとう!

4

1 に答える 1

2

あなたが持っているとき

$.post('1.php',{},function(){});
window.location.href="../../2.php";

2 行目は、最初の行が実行されるとすぐに実行されます。ただし、最初のステートメントは ajax リクエストを起動するだけで、ブラウザが実際にリクエスト全体をサーバーに送信するまでブロックしません。

この 2 行目はページを置き換えるため、スクリプトも停止し、サーバーへのクエリなど、ページに対して行っていたことを停止できることをブラウザに伝えます。

解決策は、最初のコードにあるものです:

$.post('1.php',{},function(){window.location.href="../../2.php";});

変更は、window.locationブラウザーが応答を受信したときにのみ行われます。

于 2013-07-22T12:02:17.257 に答える