Межсайтовый AJAX с использованием jQuery

У меня есть существующий jQuery-плагин, который делает много вызовов AJAX (в основном JSON). Мне интересно, что самое быстрое, чтобы позволить ему выполнять межсайтовые вызовы, то есть URL $.get и $.post не будут из одного домена.

Я слышал о JSONP, но задавался вопросом, может ли кто-нибудь дать мне конкретный пример для всего процесса. Я хочу внести минимальные изменения, если возможно, на мой script. Должен ли я использовать proxy.php?

Спасибо за ваше время.

Ответ 1

JSONP позволит вам выполнять межсайтовые вызовы. См. документы jQuery в этом отношении.

Концепция проста: вместо обычного вызова Ajax jQuery добавит тег <script> к вашему <head>. Чтобы это работало, данные JSON должны быть завернуты в вызов функции.

Серверу необходимо отправить информацию таким образом (пример PHP):

$json = json_encode($data);
echo $_GET['jsonp_callback'] . '(' . $json . ');';

Затем вы можете использовать jQuery для получения этой информации:

$.ajax({
  dataType: 'jsonp',
  jsonp: 'jsonp_callback',
  url: 'http://myotherserver.com/getdata',
  success: function () {
    // do stuff
  },
});

Дополнительная информация доступна здесь: Что такое JSONP?

Ответ 2

Если у вас есть контроль над удаленным доменом или удаленный домен имеет разрешающий crossdomain.xml, вы можете отказаться от библиотеки, например flXHR в сочетании с плагин jQuery.

Ответ 3

Вы также можете использовать CORS вместо JSONP, работает с ff, chrome, safari. CORS менее хлопотно настраивается и требует только фильтра на стороне сервера.

Пожалуйста, ознакомьтесь с этой статьей. Единственное ограничение - IE не поддерживает эту и более старые версии FF, хром также имеет некоторые проблемы.

http://techblog.constantcontact.com/software-development/using-cors-for-cross-domain-ajax-requests/