2012-01-17 4 views
3

저는 약간 새로운데, 지금까지 가지고있는 코드는 아직 작동하지 않지만 누구나 제가 누락 된 것을 알려주면 감사 할 것입니다.Github API에 대한 Ajax 호출이 실패합니다.

기본적으로 json 데이터를 반환하는 github의 api를 호출하려고합니다. 나는 결국 그것을 파싱하고 특정 정보 만 표시하고 싶지만 현재는 브라우저에서 데이터를 표시하려고합니다. 여기에 지금까지 무엇을 가지고 :

<script type="text/javascript"> 
$(document).ready(function() { 

$.ajax({ 
    url: "https://api.github.com/repos/VonC/gitolite/git/refs/tags", 
    dataType: "jsonp", // I'm under the impression i should use jsonp, since this is a cross domain call 
    success: function (returndata) 
    { 
     $('.result').html(returndata); 
     alert('Load was performed.'); 
     } 
    }); 
}); 
</script> 

URL입니다 확실히 작동합니다 : 당신이 CURL을 사용하여 호출 할 때, 다음과 같은 JSON 데이터가 반환됩니다

[ 
{ 
"object": { 
    "type": "commit", 
    "sha": "9accde83842523e18de320fc2f0a8efeaebef27b", 
    "url": "https://api.github.com/repos/jeffreycwitt/jeffswebpage/git/commits/9accde83842523e18de320fc2f0a8efeaebef27b" 
}, 
"url": "https://api.github.com/repos/jeffreycwitt/jeffswebpage/git/refs/heads/master", 
"ref": "refs/heads/master" 
} 
] 

감사를 할 수있는 어떤 조언을 나에게주세요.

+1

Ehats을 당신은 너무 같은 데이터에 액세스 할 수 있습니다 (속성 이름 개체를 사용하는 것은 오히려 혼란 있음을 주목할 필요가 있지만, 그것은 될 수있는 문자열))

returndata[0].object.sha 

을 (그리고 JSON으로 제이슨 변경 문제 ? 너는 전화를하고 존슨이 돌아온다. 그렇지 않니? – NimChimpsky

+1

데이터 유형 : "jasonp"가 약간 잘못되었습니다. 제이슨 P는 데이터 타입이 좋아할 것이라고 확신합니다 : D –

+0

@NimChimpsky - 브라우저에서 작동하지 않는다는 점을 제외하고는 좋을 것 같습니다. 작동합니까? 내 피들 체크 http://jsfiddle.net/Geoff16W/JSGnF/2/ - 당신이 그것을 작동하게 할 수 있는지 알려주세요. – Jeff

답변

5

dataTypejsonp이 아니고 jasonp이 아야합니다. JSONP 호출을 작성하지 않으므로 더 나은 것은 단지 json이어야합니다.

주의해야 할 또 하나주의해야 할 점은 returndata이 JSON 표현에서 나오는 실제 파싱 된 JavaScript 객체가되고 JSON 객체는 문자열이 아니기 때문입니다. 즉, .result div에 바로 입력 할 수 없습니다.

다음은 나를 위해 작동하는 것 같다 :

$.ajax({ 
    url: "https://api.github.com/repos/VonC/gitolite/git/refs/tags", 
    dataType: "json", 
    success: function (returndata) 
    { 
     $("#result").html(returndata[0]["object"]["sha"]); 
     alert('Load was performed.'); 
    } 
}); 
+0

아, 맞습니다. 사실 틀 렸습니다. 나는 그 질문을 편집 할 것이다. 이제 경고가 발생하지만 여전히 "div"를 입력하고 브라우저에 표시되는 데이터가 없습니다. – Jeff

+0

서버에서 반환 된 데이터가 간단한 텍스트 인 경우 div에 직접 삽입 할 수 있습니다. 그렇지 않으면 서버가 반환 한 JSON 문자열을 기반으로 만든 Javascript 객체에서 필수 텍스트를 가져와야합니다. –

+0

tada - 작동합니다. 매우 감사합니다. 나는 왜 내가 jsonp를 사용하지 않는지에 대해 아직도 혼란스러워하고 있다고 생각한다. 나는 같은 도메인에 속하지 않는 사이트에 이것을 사용하기로되어 있다고 생각했다. – Jeff

1

반환 된 데이터는 HTML하지, 그 JSON 개체 당신이 그들을 통해 직접 또는 루프 필드를 참조해야합니다.

)

+0

이 .parseJson이 작동하지 않아야하는 이유 : 'success : function (returndata) { var obj = $ .parseJson (returndata); $ (". result") .html (obj.유형); 경고 ('로드가 수행되었습니다.'); } }); – Jeff

+1

@jeff 이미 json 개체 인 returndata가 있습니다. 그냥 – NimChimpsky

+0

잡았다, 고마워! – Jeff

관련 문제