테스트 사이트 - 개발 중인 베타 버전입니다

실시간 json 파싱 채택완료

선셋 5년 전 조회 2,692

</p>

<p><script></p>

<p> </p>

<p>var i = 1;                </p>

<p> </p>

<p>function myLoop() {       </p>

<p>  setTimeout(function() {</p>

<p>    <?php</p>

<p>      $json_string = file_get_contents_curl("api.json");</p>

<p>      $data = array();</p>

<p>      $data = json_decode($json_string, true);       </p>

<p>        ?> </p>

<p>    $("#list").append("<li><?php echo $data['id']; ?></li>");</p>

<p>    i++;                  </p>

<p>    if (i < 100) {         </p>

<p>      myLoop();           </p>

<p>    }                     </p>

<p>  }, 1000)</p>

<p>}</p>

<p> </p>

<p>myLoop();                   </p>

<p></script></p>

<p>

 

이런식으로 javascript를 통해 실시간으로 변경되는 $data['id']; 값을 1초 단위로 표시하는데

위 코드를 실행하면 값이 변경되어도 처음 값으로만 표시됩니다.

자바스크립트로 새로운 json 파일을 읽어오려면 어떻게 해야하나요??

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
H
5년 전

PHP는 서버에서 실행되는 언어이고, JS는 클라이언트(PC의 브라우저)에서 실행되는 언어이기때문에

저렇게 코딩하셔도 제대로 실행되지 않는 것입니다.

 

PHP 부분을 Ajax를 이용하여 $data 값을 받아오도록 작업하셔야 합니다.

</p>

<p>// ==== PHP 파일 코딩</p>

<pre>
<?php
  $json_string = file_get_contents_curl("api.json");
  $data = array();
  $data = json_decode($json_string, true);
  echo $data['id'];
?> </pre>

<p>// ==== JS 파일 코딩</p>

<pre>
<script>
var i = 1;                
function myLoop() {       
  setTimeout(function() {
    /*
        Ajax를 이용하여 위에 코딩한 PHP 파일을 호출하여 
        결과값을 받아오셔야 합니다.
    */
    $("#list").append("<li>"+ [Ajax를 통해 받아온 결과값] +"</li>");
    i++;                  
    if (i < 100) {         
      myLoop();           
    }                     
  }, 1000)
}
 
myLoop();                   
</script>
로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

5년 전

셋타임 할때 php 바로 쓰지 마시고 ajax로 보내서 값을 받아서 뿌려보세요.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인