2012-01-17 3 views
3

Так что я немного новичок в этом, код, который я до сих пор не работает, но если кто-нибудь скажет мне, что я пропущу, я был бы благодарен.Ошибка Ajax для API Github

В принципе, я пытаюсь позвонить в api github, который возвращает данные 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" 
} 
] 

Спасибо за любые советы вы можете дай мне.

+1

Ehats в вопрос? Вы делаете звонок, и вы возвращаете json ... это хорошо, не так ли? – NimChimpsky

+1

dataType: «jasonp» выглядит немного неправильно. Я уверен, что Jason P любит быть типом данных: D –

+0

@NimChimpsky - ну, может показаться хорошим, за исключением того, что он не работает в моем браузере - это сработает для вас? проверьте мою скрипку http://jsfiddle.net/Geoff16W/JSGnF/2/ - сообщите мне, можете ли вы заставить ее работать. – Jeff

ответ

5

dataType, вероятно, должно быть jsonp, а не jasonp. Еще лучше, это должно быть просто json, поскольку вы не совершаете вызов JSONP.

Еще одна вещь, о которой следует помнить, заключается в том, что returndata будет фактическим, проанализированным объектом JavaScript, который выходит из представления JSON, а не объект JSON в виде строки. Это означает, что вы не можете поместить его прямо в div .result.

Следующая, кажется, работает для меня:

$.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, иначе вы должны взять требуемый текст из объекта Javascript, созданного на основе строки JSON, возвращаемой сервером. –

+0

tada - это работает. Огромное спасибо. Я думаю, я все еще смущен тем, почему я не использую jsonp - я думал, что должен использовать это для сайтов, не находящихся в одном домене. – Jeff

1

возвращаемые данные не HTML, его объект JSON вы должны ссылаться на поля непосредственно или цикл через них.

Вы можете получить доступ к данным, как это (хотя стоит отметить, что с помощью объекта имени свойства довольно запутанный, это может быть любой строке))

returndata[0].object.sha 

(И изменить Джейсон JSON)

+0

Любые причины этого .parseJson не должны работать: 'success: function (returndata) { var obj = $ .parseJson (returndata); $ (". Result"). Html (obj.тип); предупреждение ('Нагрузка выполнена.'); } }); ' – Jeff

+1

@jeff у вас уже есть объект json, returndata. Просто используйте это – NimChimpsky

+0

gotcha, спасибо! – Jeff

Смежные вопросы