2009-07-21 2 views
2

저는 json의 멍청한 놈입니다. (jquery 비트를 알고 있습니다.) ... 작은 스크립트를 얻으려고 시도합니다. 특정 시간에 검색하고 싶습니다. 나는 온라인 읽은 위도/LNG 과에서 비트에서이 스크립트를 만든 :JSONP 콜백이 실패합니다. javascript/jquery에 대한 도움이 필요합니다.

$.getJSON("http://ws.geonames.org/timezoneJSON?lat=47.01&lng=10.2&callback=?", 

    { 'uID': 1 }, 

    function(data) { 
     $.each(data, function(i, item) { 
      $("<span/>").html(item.time).html(".nowtime"); 
     }); 
    }); 

말할 필요도없이, 그것은 ... 작동하지 않는 사람은 그것으로 나에게 손을주고도 설명 할 수있을 것 $ ("") .html (item.time) .html (". nowtime"); 을 의미합니다. http://www.geonames.org/export/web-services.html#timezone

감사

+0

화재가 발생했습니다. 실패한 부분은 어디입니까? 요청을 보냈습니까? 또는 콜백에? – geowa4

+0

nvm 나는 그것을 달렸다. 그것은 콜백에서 실패합니다. firebug는 디버깅에 큰 도움이되지 않지만 적어도 XSS가 아니라고 합리적으로 확신 할 수 있습니다. – geowa4

답변

3

내가 원래 문제가 같은 원본 정책에서 가능성이 높습니다 생각 : 여기

는 JSON 소스 참조입니다 (내가 처음가 무엇인지 이해하지 않는다). URL에 AJAX 요청을하려면 자바 스크립트 코드가 포함 된 페이지와 동일한 도메인 (및 포트)에 있어야합니다.

하지만 조지 4 세가 수정 된 후 확인해 보았습니다.

콜백에서 반환 된 data 개체는 JSON 평가 개체이며 배열이 아닙니다. 대부분의 경우, 코드 같은 것을 읽어해야했습니다 : 선택기는 아마도 잘못

$.getJSON("http://ws.geonames.org/timezoneJSON?lat=47.01&lng=10.2&callback=?", 
    { 'uID': 1 }, 
    function(data) { 
    $("<span/>").html(data.time); // Or maybe with a different selector (see below) 
    } 
); 

을, 당신은 test의 ID로 사업부에 결과를 넣어, 예를 들어, 할 수 있습니다. 이 ID test (해시 기호 (#)는 생각을 나타냅니다)와 객체를 얻을입니다 무슨 말을

$("#test").html(data.time); 

및 컨텐츠를 업데이트하는 경우 선택기를 포함하는 라인으로 변경해야 data.time으로 설정됩니다.

+0

방화범에 사로 잡아라. 그것은 콜백에서 깨진다. – geowa4

+0

네 말이 맞아, 나는 눈을 믿을 수가 없어! 하지만 대답은 고정되어 있습니다. –

+0

더 좋을 것입니다, 그것은 stackoverflow가 그 천부적으로 사용하는 것입니다. – geowa4

1

span 코드는 span 요소를 생성하고 HTML을 반환 된 시간 값으로 설정합니다. 하지만 코드는 즉시 ".nowtime"으로 HTML을 설정하지만 실제로 DOM에 추가하지는 않습니다. 나는 마지막 .html ('. nowtime')이 .addClass ('. nowtime')이어야하고 거기에 어딘가에 .appendTo (???)가 있어야한다고 생각하지만, 그것을 추가해야합니다.

편집 : 또한

, 난 당신이 각각의 기능을 필요가 있다고 생각하지 않습니다. 그것은 데이터 객체의 멤버를 반복하는 것으로 보인다. 시간 속성을 직접 사용하고 싶습니다.

예 (하지만, 당신은 가능성이 다른 곳에서 DOM에 추가하려는 경우) :

$(function() { 
    $.getJSON("http://ws.geonames.org/timezoneJSON?lat=47.01&lng=10.2&callback=?", { 'uID': 1 }, function(data) { 
     $("<span/>").html(data.time).appendTo('body'); 
    }); 
}); 

참고 : 당신의 JSONP 호출이 다음 객체 의 배열을 반환한다면 당신이 그들을 반복해야합니다 각 방법으로 객체 배열을 반환하는 메소드가 있는지를 알기 위해 서비스에 대해 충분히 알지 못합니다. 그러나이 호출은하지 않습니다.

+0

우승자가 있습니다! 방금 방화범을 발동하여 문제가 '각'을 사용하고 있습니다. 'i'는 열쇠이고'item'은 그의 경우의 값입니다. – geowa4

0

무엇이 잘못되었는지 명확하게 알지 못합니다. 콜백은 nowtime 필드를 가져 와서 페이지의 컨트롤에 넣으려는 것으로 보입니다.나는이 생각 :

$("").html 

는 결과가 어디로 가는지를 알 수있는 따옴표의 선택이 있어야합니다. $ ("# myfield")와 (과) 같은 부분이 있습니다 ....

+0

"지금"속성이 없습니다. 나는 그것이 적용되어야하는 클래스라고 추측하지만 충분한 코드 (마크 업)가 없다. – tvanfosson

관련 문제