2013-02-14 1 views
-1

json으로 목록을 작성하고 있습니다. 그러나 그 json (PHP 파일) 나에게 X 초 후 (알 수없는 시간) 결과를 제공합니다.X 초 후 '도착'하는 json 데이터를 사용하는 방법은 무엇입니까?

외부 파일 - JSON 데이터 가져 오기 :

$(function(){ 
       // can't modify this file 
       $.getJSON('json.php', 
        function(data) {    
        items = []; 
        $.each(data, function(key, val) { 
          items.push('<li id="' + key + '">' + val + '</li>'); 
        }); 
       }); 
    }); 

인라인 코드를 - 출력 : 지금은 모두 코드가 너무 동시에로드되기 때문에 내가 #result에서 아무것도 볼

<script> 
$(function(){ 
       $('<ul/>', { 
         'class': 'my-new-list', 
         html: items.join('') 
       }).appendTo('#result'); 
     }); 
</script> 

출력에서 '항목'을 찾을 수 없습니다.

인라인 코드을 수정하여 외부 파일에서 json 데이터를 제공 할 때까지 기다릴 수 있습니까? 어쩌면 관찰자일까요?

편집 : 내가 충분히 설명하지 않은 것처럼 보입니다. 나는 가난한 영어에 대해 유감이다. 저는 또한 Js/Jquery 초보자입니다.

EDIT 2 : json 데이터를 가져 오는 데 아무런 지연이 없다면 직렬 통신을 통해 연결된 일부 외부 장치에 따라 다르며 때로는 json을 얻는 데 2,3 초 정도 걸립니다.

+1

이 변수는 다른 범위에서 정의 되었기 때문에 '항목'을 찾을 수 없습니다. – dfsq

+1

첫 번째 파일을 수정할 수 없다면 어떻게'items'를 얻을 수 있을까요? 타이밍은 무의미한 것 같습니다. –

+0

유용한 의견을 보내 주셔서 감사합니다. 불행히도 저는 (아직) 초보자입니다. – Shaz

답변

2

유일한 옵션은 데이터를 사용할 수 있는지 주기적으로 검사하는 setInterval을 사용하는 것입니다. 이상적인 방법은 파일 1을 수정해야합니다.

function handleData(items) { 
    // dostuff with items 
} 

var itemsInterval = setInterval(function(){ 
    if (items && items.length) { 
     handleData(items); 
     clearInterval(itemsInterval); 
    } 
},250); 
+0

지연이 없을 때 작동하기 때문에 질문을 수정했습니다. 감사! – Shaz

+0

@Shaz 지연이 작을 때 코드가 작동하면 file1이 질문에 게시 된 것과 다르다는 것을 의미합니다. 지금과 마찬가지로, 당신이 말하는 작품은 불가능합니다. 'var items ='은 아마 단지'items =' –

+0

입니다. 답을 갱신 해주셔서 감사합니다. 감사합니다. – Shaz

관련 문제