2016-11-21 47 views
0

我正在使用一個變量來存儲來自post方法的json數據。當我在post方法外使用該變量時,它顯示的值爲undefined。我如何訪問該變量。這是我的代碼。如何從一個函數賦值給一個變量並在另一個函數中訪問它

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

因爲您在異步函數中分配變量,代碼將繼續執行到第二個警報(val)並返回到回調函數,直到響應請求。您可以通過同步請求訪問數據:

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

或者只是在成功回調中操作數據。

另一種選擇是去ES6的承諾。

0

設置幾個毫秒的時間出來,然後警告「VAL」是這樣的:

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

請聲明變量 window.var(變量名),你的Ajax請求之前,然後把Ajax響應到它,然後嘗試使用..我希望它會有所幫助。

相關問題