2009-06-27 11 views
0

아마도 매우 분명한 질문이 무엇인지 묻는 사과, 저는 하루 종일 머리를 짚고있었습니다. 일반적으로 JQuery와 JavaScript를 처음 접했습니다.jQuery 객체가 정의되지 않았습니다.

나는 다음과 같은 실행 해요 : -

<script type="text/javascript"> 
$(function() { 
$.getJSON(
    "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22UTG.L%22)%0A%09%09&format=json&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback=?", 
    function(data) { 

$.each(data.query.results.row, function(index, item){ 
    $('#quotes') 
    .append(
     $('<p/>') 
     .append($('<span class="left"/>').text(item.symbol)) 
     .append($('<span class="right"/>').text('$'+item.price)) 
    ); 
    }); 

    } 
); 

}); 
</script> 

내가받을 객체 정의되지 않은 VAR 이름을, I = 0, 길이 = object.length; 방화범이 끌려서 - 누가 도와 줄 수 있니?

답변

1

JSON 구조체는 query.results.row를 모르지만 대신 query.results.quote를 사용합니다. 작동 방식 :

console.log(data); 
    var quotes = data.query.results.quote; 
    for(var q in quotes){ 
     $('#quotes') 
     .append(
      $('<p/>') 
      .append($('<span class="left"/>').text(q)) 
      .append($('<span class="right"/>').text('$'+quotes[q])) 
     ); 
     } 
    }); 

JSON 리소스가 아니라 JSONP 리소스를 호출합니다. url의 콜백 인수는 함수 이름이어야하며 $ .getScript를 사용해야합니다.

myCallback = function(jsonData){...}  
$.getScript("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22UTG.L%22)%0A%09%09&format=json&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback=myCallback"); 
+1

반드시 그렇지는 않습니다. jQuery의 getJSON이 대체됩니까? 올바른 콜백을 사용하고 스크립트 요소를 만듭니다. – moff

+0

흥미 롭습니다. 그 사실을 모릅니다. 미친 jQuery 마술. – stefanw

2

JSON 응답을 보면 data.query.results.row은 정의되지 않았습니다 (비록 data.query.results이 아님). 따라서 정의되지 않은 속성을 반복합니다.

콜백에서 console.log(data)을 사용하여 응답 속성을 읽을 수 있습니다. 그런 다음 아직 Firefox를 사용하지 않은 경우 download and install FireBug을 입력하고 콘솔을 확인하십시오.

관련 문제