Используйте теги script для междоменного ajax - PullRequest
1 голос
/ 29 февраля 2012

Я прочитал эту статью и эту . Как я могу принять использование тегов скрипта для запроса междоменного домена для следующего:

var nytimes_api = 'http://api.nytimes.com/svc/semantic/v2/concept/article/2010/10/06/business/media/06tribune.json?&fields=article_list&api-key=4949d84e6ed8e55dbd7352d88da21f6d:9:65735612'; // returns JSON
// code accessing nytimes_url
// and retrieving data from it

Спасибо.

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Исследуйте JSONP и посмотрите, поддерживает ли API NYTimes и как вы можете его использовать.

Справочные статьи:

http://en.wikipedia.org/wiki/JSONP

http://remysharp.com/2007/10/08/what-is-jsonp/

Множество ссылок с поиском в Google для JSONP.

В двух словах, JSONP отправляет запрос сценария на удаленный сайт, используя пользовательский URL с параметрами в нем. Обычно один из параметров - это имя вашей функции javascript, которое будет вызывать возвращаемый javascript, когда у него есть данные. Итак, вы делаете запрос сценария удаленного сайта. Удаленный сервер получает запрос сценария. Он анализирует параметры из URL, чтобы увидеть, что вы просите его сделать. Одним из таких параметров является имя функции JavaScript. Затем удаленный сервер возвращает некоторый JavaScript. Частью этого javascript обычно являются как запрошенные вами данные, так и вызов имени функции javascript, которое вы указали в URL. Когда браузер выполняет этот возвращенный javascript, ваш вызов функции вызывается с запрошенными данными в качестве параметра.

Подробная информация о том, как возвращаются данные, зависит от разработчика API и может быть полезна из описания API NYTimes.

Вы можете использовать эту технику JSONP только с API, который явно ее поддерживает.

0 голосов
/ 29 февраля 2012

Чтобы использовать теги сценария в том виде, как вы описываете, API, от которого вы запрашиваете данные, должен поддерживать JSONP .В частности, он должен поддерживать передачу параметра, такого как ?callback=myFunction, и затем оборачивать его вывод в эту функцию, чтобы вы могли выполнить данные в виде скрипта.

Например, если /api.json вернул что-то вродетак:

{'name': 'Bob'}

Для возврата вам потребуется /api.json?callback=myFunction:

myFunction({'name': 'Bob'});

Затем вы можете использовать что-то вроде jQuery's $.getJSON function для обработкисоздание сценария для вас.

К сожалению, API-интерфейс New York Times в настоящее время не поддерживает JSONP, хотя для него существует открытый запрос .

.чтобы использовать этот API без JSONP, вам понадобится какой-нибудь серверный компонент для выполнения запроса за вас.

...