Можно ли использовать JavaScript для загрузки объекта JSON с другого домена / сервера? - PullRequest
3 голосов
/ 01 февраля 2010

Как бы выглядел этот код?

Ответы [ 4 ]

5 голосов
/ 01 февраля 2010

Этот другой домен / сервер должен поддерживать JSONP, который в основном включает JSON в обратный вызов.

В jQuery вызов будет выглядеть так:

$.getJSON(
     'http://otherdomain.com/api/whatever?callback=?', 
     { key: 'value', otherkey: true },
     function(data){
        //handle response
     }
);

Фактический ответ от другого сервера (если вы посмотрите на то, что на самом деле отправлялось) будет выглядеть так:

// With this url:
http://domain.com/api/method?callback=the_callback_function_name

// The response would look like this:
the_callback_function_name({ "json": "data here"});

Метод jQuery getJSON автоматически обрабатывает JSONP, когда вы предоставляете дополнительные callback=?. Просто имейте в виду, что некоторые сайты используют разные имена, например json_callback=?. Важной частью является то, что вы включаете его как часть URL и не пытаетесь добавить callback: '?' к data части getJSON функции.

4 голосов
/ 01 февраля 2010

Только через JSONP. Используете ли вы jQuery или какой-либо другой фреймворк, он сводится к блоку скрипта, подобному следующему:

<script type="text/javascript" src="http://path.to/your/javascript"></script>

Блок <script> защищен от междоменных ограничений. Предостережение заключается в том, что сервис также должен поддерживать JSONP. Если скрипт возвращает объект JSON, подобный этому:

{a: 0, b: 1}

Объект будет оценен, но ничего не происходит. Но службы JSONP принимают имя функции обратного вызова, например,

<script type="text/javascript" src="http://path.to/your/javascript?callback=yourCallbackFunction"></script>

и обернуть данные в качестве параметра для вашего обратного вызова следующим образом:

yourCallbackFunction({a: 0, b: 1});

Так что функция вызывается при оценке скрипта.

1 голос
/ 01 февраля 2010

Вы можете использовать JSONP. в jQuery попробуйте getJSON: http://api.jquery.com/jQuery.getJSON/

0 голосов
/ 01 февраля 2010

Вместо этого вы должны использовать локальный прокси.Настройте страницу asp.net/php, которая будет загружать удаленную страницу на серверной части, а затем использовать ajax для загрузки страницы прокси.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...