0

私はjavascriptとjQueryが初めてです。サーバーからデータを取得するために ajax 呼び出しを使用しています。実際には、呼び出し後に JavaScript 変数が失われています。これが私がしたことです。変数は関数の外側で定義され、他の関数で処理されます。

var a = 0;
function myfunction(url){
$.ajax({
        url: url,
        timeout: 20000,
        success: function(data){
                  // Do some stuff
                  // The a variable is now undefined
                },
        error: function(){
                  // Do some stuff
                }
       });
}

すべてが正常に機能しています。唯一のことは、変数を保持する必要があることです...しかし、それはなくなったようです..

誰かが理由を知っていますか?

ありがとう

4

2 に答える 2

3

別の関数で変数を使用していると言います (ただし、その関数は表示されません)。ただし、その関数は、AJAX 呼び出しが完了する前に実行されている可能性があります。これが「非同期」の意味です。同時には行われません。

これを修正するには、変数が変更されたsuccess後にのみ実行されるコードをコールバック内に追加します。a

于 2012-08-29T21:37:35.163 に答える
0

これは機能し、URL は範囲内にとどまります。チェックする必要があるのは、エラーが発生しているかどうかです。これにより、成功が実行されなくなります (alert("error");テストのためにそこに何かを投げます)。

私は FireFox で Firebug を使用して私を助けています。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript">

var a = 0;

function doSomething (url){
    $.ajax({
            url: url,
            timeout: 20000,
            success: function(data){
                      alert(a);
                    },
            error: function(){
                      // Do some stuff
                    }
           });
    }

</script>

<a href="#" onclick="doSomething('variableScope.html'); return false;">Do it</a>
于 2012-08-29T21:40:32.310 に答える