Проблема с CrunchBase API и jQuery $.getJSON

Я пытаюсь просто отправить предупреждение с «именем», но, похоже, это не работает. Совет?

$(document).ready(function() {
$.getJSON("http://api.crunchbase.com/v/1/companies/permalink?name=Google", function(data) {
   alert("Hello: " + data.name);
  });
 });

Вот что содержит JSON:

{"crunchbase_url": "http://www.crunchbase.com/company/google",
 "permalink": "google",
 "name": "Google"}   

person Arun V    schedule 02.12.2010    source источник


Ответы (2)


Обычно вы использовали бы здесь JSONP, добавив &callback=? к своему URL, однако обратный вызов JSONP в этом случае не поддерживается из документация по API crunchbase:

Список объектов

Чтобы получить список всех сущностей в определенном пространстве имен на CrunchBase, используйте URL-адрес в форме:

http://api.crunchbase.com/v/1/<plural-namespace>

Доступные пространства имен во множественном числе:

  • компании
  • люди
  • финансовые организации
  • продукты
  • поставщики услуг

Это действие не поддерживает обратные вызовы JavaScript.

Суть самая важная, вы увидите, что это: http://api.crunchbase.com/v/1/companies/permalink?name=Google&callback=callme по-прежнему возвращает обычный JSON, а не JSONP.

person Nick Craver    schedule 02.12.2010
comment
К счастью, ОП, по-видимому, действительно хочет загрузить только одну компанию, поэтому перемещение его к единичным действиям может решить эту проблему. - person Matchu; 02.12.2010
comment
в чем разница между &callback=? и? обратный вызов =? - person Arun V; 02.12.2010
comment
@Matchu - для этого требуется другой ввод, например, http://api.crunchbase.com/v/1/companies/permalink?name=A+Small+Orange против http://api.crunchbase.com/v/1/company/a-small-orange.js (и другие, где перевод не так прост, например, кодируется & ... так что это не тот же метод :) - person Nick Craver; 02.12.2010
comment
@ ddrmaxgt37 - Просто формат строки запроса, первый параметр должен быть ?param=blah, остальные после него должны быть &param=blah - person Nick Craver; 02.12.2010
comment
Ммм. Это другой URL-адрес, который, похоже, ему действительно нужен. - person Matchu; 02.12.2010
comment
@Matchu - вы просто игнорируете мой предыдущий комментарий, что он ищет совершенно по-другому, не по имени? - person Nick Craver; 02.12.2010
comment
Хм. Я недостаточно знаю об этом сайте, чтобы понять, в чем разница между ?name=A+Small+Orange и a-small-orange.js, поскольку они оба выглядят так, как будто они находят меня по имени. Ах хорошо. Я полагаюсь на ваше мнение :) - person Matchu; 02.12.2010

Если вы не Crunchbase, вы не можете отправить этот запрос. Из соображений безопасности только www.crunchbase.com может отправлять AJAX-запросы www.crunchbase.com. (Представьте, что мы говорили о www.bankofamerica.com, и я вошел в систему. Было бы проблемой, если бы любой сайт мог отправлять произвольные запросы к www.bankofamerica.com с прикрепленными моими файлами cookie.)

В документации по API указан параметр JSON-P, тем не мение. Если вам интересно, вы можете посмотреть подробности реализации, но важно то, что метод JSON-P может обойти ограничение доменного имени, поскольку API Crunchbase позволяет вам это сделать.

URL-адрес http://api.crunchbase.com/v/1/company/google.js похож на тот, который вы упомянули, но этот конкретный URL-адрес позволяет вам использовать JSON-P, а тот, который вы разместили, - нет. jQuery позволяет вам сделать это легко: передайте URL-адрес $.getJSON как http://api.crunchbase.com/v/1/company/google.js?callback=? (немного об обратном вызове важен!), и jQuery заполнит пробелы и обработает волшебную загрузку скрипта за кулисами. Это очень прикольно :)

person Matchu    schedule 02.12.2010