2017-12-22 1 views
0

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

당신을위한 루프 내부의 금액/날짜를 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

또 다른 대안으로는 덜 바람직하지만 ajax 호출에서 async를 off로 설정하는 것이 좋습니다. async : false. –

관련 문제