2017-12-22 12 views
0

ajax呼び出し内で返されている値を呼び出し外の配列にプッシュしようとしていますが、それでも親関数内にあります。私はどの変数にもアクセスすることはできず、ajaxの成功宣言の中からそれを更新することはできないようです。助けを前にありがとう。

 var bill = []; 
    var billDate = []; 
    $(document).ready(function(){ 
     $.ajax({ 
     url: '../Js/readData.php', 
     data: "", 
     dataType: 'json', 
     success: function(data) 
     { 
      //var obj=JSON.parse(data); 
      var obj=data; 
      for (var x in obj) 
      { 
       bill.push(obj[x].Amount); 
       billDate.push(obj[x].Dates); 
      } 
     } 
     }); 
+0

あなたはforループ内の金額/日付をCONSOLE.LOGしてみましたか? – bigless

+1

'for(var x in obj){... obj [x] ...}'はほぼ確実に正しくありません。そこに 'x'だけを使用するのですか? – Draco18s

答えて

1

AJAX呼び出しがそう変数は、成功関数の外で利用できるため、すぐには更新されませんasynchronousです。サーバーからのデータのロードに時間がかかると呼び出されます。

匿名の成功関数を外部関数に移動し、そこに必要な処理をしたい場合があります。

$(document).ready(function(){ 
 
$.ajax({ 
 
    url: '../Js/readData.php', 
 
    data: "", 
 
    dataType: 'json', 
 
    success: mySuccessFunction 
 
}); 
 

 
var mySuccessFunction = function(obj) { 
 
    for (var x in obj) 
 
     { 
 
     bill.push(obj[x].Amount); 
 
     billDate.push(obj[x].Dates); 
 
     } 
 
}

+1

もう1つの方法ですが、あまり望ましくはありませんが、ajax呼び出しでasyncをオフに設定することです:async:false。 –

関連する問題