0

外部で宣言された変数:

var total=0;

on success of AJAX{

total++;
alert(total);// gives value
}

alert(total)// gives zero value

ここでは、合計値を0にしています。

4

2 に答える 2

1

リクエストajaxはおそらく非同期です。これは、応答が返される前alertに発生することを意味します。

応答に依存するコード(アラートなど)onreadystatechangeは、ハンドラーに配置する必要があります。

于 2012-07-30T23:14:17.833 に答える
0

実際に何が問題なのかは不明ですが、典​​型的な非同期の混乱のように聞こえます。XMLHttpRequestデフォルトでは、非同期を実行し、イベントが発生するとコールバックが発生します(readyState 4など)。

したがって、alert()ajaxハンドラーが起動する前に、ステートメントが検出される可能性があります。

したがって、簡単な解決策は、それalert().onreadystatechangeそれぞれ.onloadのイベントハンドラーに移動し、を処理するパーツの一番下に移動することsuccessです。

最悪の解決策は(誰もそれを推奨しない場合でも) 、同期XMLHttpRequestとして設定することです。つまり、リクエストが実行されている間、リクエストが終了するまで、ブラウザとそのUIスレッドはロックダウンされます。

于 2012-07-30T23:15:37.343 に答える