Междоменные запросы AJAX запрещены политикой одного и того же происхождения .Это означает, что вы не можете выполнять междоменные запросы обычным способом и является причиной ошибок во втором примере.
В первом примере вы пытаетесь обойти эту проблему - JSONP.Это работает путем помещения элемента script
на страницу, которая ссылается на внешний скрипт.Внешний сценарий должен ответить, заключив данные в вызов функции.Если внешний сценарий не поддерживает это (и похоже, что digg этого не делает), вы не можете использовать обходной путь JSONP.
Поскольку сервер отправляет данные JSON (поскольку он не поддерживает JSONP), ваш браузер получаетсбит с толку, когда он пытается разобрать его как обычный Javascript.Это причина ваших первых ошибок.
Кажется, что digg поддерживает поддержку JSONP, но ему необходим дополнительный аргумент type=javascript
:
$.getJSON('http://services.digg.com/2.0/story.getTopNews?limit=25&type=javascript&callback=?', function(data) {
console.log(data);
});
Это работает для меня.