Ajax对Github API的调用失败

时间:2012-01-17 11:35:48

标签: jquery ajax json

所以我对此有点新意,到目前为止我的代码还没有工作,但如果有人能告诉我我错过了什么,我将不胜感激。

基本上,我正在尝试调用github的api,它返回json数据。我最终想要解析它并仅显示特定信息,但目前我只是想在我的浏览器中显示数据。以下是我到目前为止的情况:

<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"
 } 
]

感谢你给我的任何建议。

2 个答案:

答案 0 :(得分:5)

dataType应该是jsonp而不是jasonp。更好的是,它应该只是json,因为你没有进行JSONP调用。

您应该注意的另一件事是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.');
    }  
});

答案 1 :(得分:1)

返回的数据不是html,它是一个json对象,你必须直接引用这些字段或循环它们。

您可以像这样访问数据(虽然值得注意的是使用属性名称对象相当混乱,但它可以是任何字符串))

returndata[0].object.sha

(并将jason改为json)