2016-11-21 19 views
0

私は、postメソッドからのjsonデータを格納する変数を使用しています。私はpostメソッドの外でその変数を使用しているとき、その値を未定義として表示します。その変数にどのようにアクセスすればよいですか?ここに私のコードです。ある関数から変数に値を代入し、別の関数で変数に値を代入する方法

var val; 
$.post("dat/jsondat.php",function(data) 
{ 

     alert(data);//this alert value 
     val = data; 
     alert(val);//this alert value 
}); 
alert(val);//this alert undefined 

valはグローバル変数です。私はpostメソッドから代入された後で別の関数でこの変数を使う必要があります。

+0

'var val;'を削除してみてください。 var宣言がなければ、グローバルになるので、 'var val;'を使う必要はありません。 – RJParikh

答えて

1

変数を非同期関数に割り当てるため、コードは2番目の警告(val)まで実行を継続し、要求に応答するまでコールバック関数に戻ります。データには同期要求でアクセスできます。

$.ajax({ 
     url: "dat/jsondat.php", 
     async: false, //config it here 
     success: function(data){ 
      alert(val); 
     } 
}); 

成功コールバックでデータを操作するだけです。

もう1つの選択肢は、ES6のPromiseです。

0

うち数ミリ秒の時間を設定して、このような警告「ヴァル」:

var val; 
$.post("dat/jsondat.php",function(data) 
{ 

    alert(data);//this alert value 
    val = data; 
    alert(val);//this alert value 
}); 

setTimeout(function(){ 
    alert(val); 
    /* other functions */ 
},200) 
0

あなたのAjaxリクエストの前に window.var(変数名)として変数を宣言し、それにAJAXの応答を入れてくださいと使用してみてください。 私はそれが助けてくれることを願っています。

関連する問題