Попытка на моей консоли, я получаю следующее:
[Error] XMLHttpRequest cannot load http://api.bandsintown.com/artists/weezer/events.json. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
Эта "проблема" называется Cross -Origin Resource Sharing (a.k.a. CORS):
Этот документ определяет механизм, позволяющий на стороне клиента запросы поперечного происхождения. Спецификации, которые позволяют API выполнять запросы с перекрестными источниками для ресурсов, могут использовать алгоритмы, определенные этой спецификацией. Если такой API используется на ресурсах example.org, ресурс на hello-world.example.org может выбрать использование механизма, описанного в этой спецификации (например, указание Access-Control-Allow-Origin: example.org в качестве заголовка ответа), что позволило бы получить этот ресурс из-за перекрестного происхождения из example.org.
Это защитный механизм, который по умолчанию используется браузерами и серверами при получении данных по межсайтовой связи. Рекомендация W3C из CORS говорит о том, что сервер должен реализовывать заголовок Access-Control-Allow-Origin, либо указать сервер, разрешенных или позволить каждому извлечь из него данные (используя подстановочные знаки *):
Пользовательские агенты обычно применяют ограничения одного и того же происхождения к сетевым запросам. Эти ограничения не позволяют веб-приложению на стороне клиента работать от одного источника от получения данных, полученных из другого источника, а также ограничивают небезопасные HTTP-запросы, которые могут автоматически запускаться в направлении пунктов назначения, которые отличаются от происхождения запущенного приложения.
Это относится только к пользовательским агентам (главным образом, к браузерам).Таким образом, пытаясь извлечь данные с помощью рубина, например, приводит к его соответствующим образом:
require 'open-uri'
open("http://api.bandsintown.com/artists/weezer/events.json"){|f| f.read()}
Это возвращает строку, содержащую JSON.
О JSONP: Вы не сможете использовать его, а также - сервер должен возвращать данные в формате JSON внутри функции обратного вызова:
my_callback([{"valid_json":"no!"},{"valid_javascript":"yes!"}])
Что должно быть сделано (если поддерживается) через сценарий тег:
<script type="text/javascript" src="http://api.bandsintown.com/artists/weezer/events.json?jsonp=my_callback"></script>
Источник: W3C
вы пробовали ' "http://api.bandsintown.com/artists/weezer/events.json"' вместо этого? –
Любые ошибки в консоли браузера? – Curt
Да, я пробовал с http перед адресом без везения. Я не вижу ошибок в консоли браузера. У меня есть несколько других функций getJson, где я могу без проблем загружать вещи из Freebase, Facebook и Youtube. –