2012-01-13 5 views
0

뭔가 잘못하고 있어야합니다. 나는 아래의 코드가 전역 변수 'gvar'를 업데이트하고 액세스 할 수 있기를 바랬지 만 그렇지 않습니다. 내가 뭘 잘못하고 있니?자바 스크립트 업데이트 및 액세스 외부 변수

<script type="text/javascript"> 
    var gvar; 
    $(function() {      
     $(document).ready(function() { 
      $.getJSON("json.php", function (myData) { 
       $.each(myData.tag, function (t, myData) { 
        if(myData.myId != null) { 
         gvar = myData.myId; 
        } 
       }); 
       return false; 
      }) 
     }); 
    }); 
</script> 

<script type="text/javascript"> 
    alert(gvar); 
</script> 
+0

경고를 보았습니까 (gvar); 기능 밖? – Dev

+2

예제 코드에 오타가 있습니까? 당신은 경고하지 않습니다 (myId), 경고하지 않습니다 (gvar). 그것 이외에 그것은 작동해야합니다. – Archer

+0

예, 죄송합니다. 오타가 ... 경고해야합니다 (gvar) ... 여전히 아무 것도 반환하지 않습니다. – echez

답변

3

gvar은 DOM 준비가 완료되는 즉시 채워집니다. 그러나 경고는 코드의 해당 부분이 구문 분석되는 즉시 실행됩니다. ready() 기능의 끝 부분에 경고를 걸어보십시오.

@Yoshi는 내가 놓친 또 다른 좋은 점이 있습니다. 변수의 채우기가 요청이 성공적으로 완료 될 때까지 지연됩니다. 테스트하기 위해 몇 초의 시간 초과를 설정 한 다음 변수에 경고를 보낼 수 있습니다. 그때까지 요청은 끝났고 변수는 경고 할 수있는 값을 갖습니다. 그러나 이는 변수가 전역 범위에서 작동하는지 여부를 테스트하기위한 용도로만 사용됩니다. 콜백 내부에서 경고 할 때 변수가 경고 바로 위에 설정 되었기 때문입니다. ;)

+0

수정 프로그램이 있지만 분명히 6 시간 후에야 코드를 답으로 게시 할 수 있습니다. 어쨌든 많은 분들께 감사드립니다! – echez

+0

제 답변이 도움이 되었습니까? 어쩌면 당신은 짧은 해설에서 당신의 솔루션을 설명 할 수 있습니다. – Connum

관련 문제