コード:
$.post('script.php',{value:value},function(data)
{
var Aquaman= ???;
});
ここで私の質問は、データ値をAquaman変数に設定する場合、どうすればよいですか?
非同期ロジックの素晴らしい世界へようこそ。
あなたがする必要があるのはvar Aquaman = data;
-しかし、その変数はその無名関数内にのみ存在します。
これを回避するには、通常の方法でグローバル変数を割り当てます。
var Aquaman;
$.post('script.php',{value:value},function(data) {
Aquaman= data;
});
ただし、このグローバル変数は、AJAX呼び出しが完了するまで設定されません。Aquaman
これは、たとえば、他のAJAX呼び出しまたはユーザーイベントによって呼び出されている場合に望ましい場合があります。ただし、次のコードは期待どおりに機能しません。
var Aquaman;
$.post('script.php',{value:value},function(data) {
Aquaman= data;
});
console.log(Aquaman); // displays nothing
...が完了するconsole.log()
直前に実行されるためです。$.post()
これを防ぐ唯一の方法は、同期AJAX呼び出しを行うことです。
$.ajax({url: 'script.php', data: {value:value}, async: false}, function(data) {...});
...しかし、これは、スクリプトを強制的に停止してコールバックが完了するのを待つことにより、AJAXのほとんどの利点を無効にします。ほとんどの場合、AJAXを非同期のままにしdata
て、コールバックの内部を処理することをお勧めします。
の値の割り当ては、次のように簡単ですdata
。Aquaman
$.post('script.php',{value:value},function(data){
var Aquaman= data;
});
ただし、スコープが可変であるため、コールバックの外部でこの値が必要な場合は、この関数の外部で$.post
定義する必要がありますAquaman
。例えば:
//Some Code
$.post(...,function(data){
var Aquaman = data;
});
// Aquaman is undefined out here.
でも:
var Aquaman;
$.post(...,function(data){
Aquaman = data;
});
// Aquaman exists (but be careful, AJAX calls make this value not accessible
// until the callback has been executed.)
非常に基本的な質問を簡単にするために、グローバルスコープでAquaman変数を宣言します。
var Aquaman;
function something()
{
$.post('script.php',{value:value},function(data)
{
Aquaman= data;
});
}
これを行うためのより良い方法を見つけることができます、そこを参照してください。