2016-07-30 13 views
0

私は以下のコードを持っています。jqueryでグローバル変数を使用するには?

var globalVar = '' 
$.get("some.php", function(data, status) 
{ 
    alert(data) 
    globalVar = data 
}); 
alert(globalVar) 

最初のアラートはデータの値を示していますが、2番目のアラートは表示されません。 globalVarがgetの関数内で適切に割り当てられていないようです。ここでグローバル変数を使用する正しい方法は何でしょうか?

+9

これは代わりに、変数のスコープの「AJAX」の非同期側面を行うことが多くを持っています。取得が完了する前に2番目のアラートが呼び出される可能性が最も高いです。 – Devon

+0

はい、そうです:) – pythonic

答えて

3

をより良い方法を更新し、あなたの最後のalert()がある前に、あなたのget()関数が終了していないということです呼び出されています。これらが正常に行われるようにするには、ファイルが受信されたら最後のalert()をコールバックに入れます。

ので、代わりにこれを試してみてください。

var globalVar = '' 
$.get("some.php", function(data, status) 
{ 
    alert(data) 
    globalVar = data 
}).done(function() { 
    alert(globalVar) 
}); 
2

あなたはこの

var globalVar = false; 

jQuery.ajax({ 
    type: "GET", 
    url: 'some.php', 
    success: function (data) { 
    globalVar = true; 
    }, 
    async: false // <- this turns it into synchronous 
});​ 

alert(globalVar); 

を試すことができます私はおそらく何が起こるこのような場合には

var globalVar = false; 

function getData(callback) { 
    $.ajax({ 
     url: 'jsOnChange.php', 
     type: 'GET', 
     success: callback 
    }) 
} 
getData(function(response) { 
    globalVar = true; 
    console.log(globalVar); 
}); 
+0

同期AJAXリクエストは、最悪の提案です。 – Xufox

+0

もしあなたがもっと良いアイデアを持っていれば、私に知らせて覚えてください。 xD私の答えを投票した後xDありがとう –

+1

上記の重複するターゲットを参照してください。 – Xufox

関連する問題