Я провел большую часть прошлой ночи, пробуя метод getJSON в JQuery против API Flickr. Мне удалось взглянуть на некоторые примеры из документов JQuery и удалось заставить их работать, однако попытки чтения JSON из моих пользовательских вызовов API терпели неудачу.getJson с пользовательским вызовом Flickr API генерирует ошибку parse
Отрывки:
Это работает:
//JQuery Flickr example code - works!
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?&format=json",
function(data) {
$.each(data.items, function(i,item){
alert(item.media.m);
if (i == 3) return false;
});
});
Это терпит неудачу!
//Custom Flickr API Call - nothing?fail?
$.getJSON("http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=c258d8ae4c29bb74da198c6ac3874671&text=Mclaren&per_page=3&format=json&callback=?&nojsoncallback=1",
function(data) {
alert(data);
}).error(function(jqXHR, textStatus, errorThrown) { alert(textStatus + errorThrown); });
Второй вызов API является допустимым ресурсом, он работает в браузере/стельку и я могу видеть содержимое JSON, но в моем JS кода возникает ошибка
"parsererrorError: jQuery18007627279118169099_1345796861535 was not called".
В этом точка, в которой я застреваю, в конечном итоге моя конечная цель - обработать возвращенный JSON и повторить каждый объект «фото» во вложенном массиве, чтобы я мог легко получить доступ к своим дополнительным свойствам во время итерации следующим образом:
[фото-экземпляр ] .id
[фото-пример] .owner
[фото-пример] .secret и т.д ...
Любая помощь будет принята с благодарностью.
Ref:http://www.flickr.com/services/api/response.json.html
Примечание: Все ключи API предназначены для целей тестирования и будут уничтожены в ближайшее время.
Спасибо вам большое! Я удалил callback =? и теперь у меня есть объекты и вы можете проходить через них (data.photos.photo). Я думал, что JSONP всегда использовался для кросс-домена ajax? Я все еще смущен, почему вы хотите обратный вызов =? почему бы не просто получить все данные и перейти оттуда? еще раз спасибо! :) – Dal
Вы можете использовать междоменный JSON (не JSONP), если сервер принимает его, устанавливая специальные заголовки. См. Https://developer.mozilla.org/en-US/docs/HTTP_access_control. Для современных браузеров и серверов я думаю, что JSONP больше не имеет смысла, но эти заголовки любезны «новыми». –