外部で宣言された変数:
var total=0;
on success of AJAX{
total++;
alert(total);// gives value
}
alert(total)// gives zero value
ここでは、合計値を0にしています。
外部で宣言された変数:
var total=0;
on success of AJAX{
total++;
alert(total);// gives value
}
alert(total)// gives zero value
ここでは、合計値を0にしています。
リクエストajaxはおそらく非同期です。これは、応答が返される前alertに発生することを意味します。
応答に依存するコード(アラートなど)onreadystatechangeは、ハンドラーに配置する必要があります。
実際に何が問題なのかは不明ですが、典型的な非同期の混乱のように聞こえます。XMLHttpRequestデフォルトでは、非同期を実行し、イベントが発生するとコールバックが発生します(readyState 4など)。
したがって、alert()ajaxハンドラーが起動する前に、ステートメントが検出される可能性があります。
したがって、簡単な解決策は、それalert()を.onreadystatechangeそれぞれ.onloadのイベントハンドラーに移動し、を処理するパーツの一番下に移動することsuccessです。
最悪の解決策は(誰もそれを推奨しない場合でも) 、同期XMLHttpRequestとして設定することです。つまり、リクエストが実行されている間、リクエストが終了するまで、ブラウザとそのUIスレッドはロックダウンされます。