Вопрос

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

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

Спасибо вам за уделенное время.

Это было полезно?

Решение

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?

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top