Межсайтовый 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/