Следуя ответу Яна, вы можете заставить AJAX преодолеть барьер домена, представленный SOP, используя JSONP. Что такое JSONP? Это тот же объект JSON, который мы все знаем и любим, но он обернут функцией:
JSON:
{
prop1: "a",
prop2: 7
}
JSONP:
myfunction(
{
prop1: "a",
prop2: 7
});
Как видите, объект JSON передается в качестве параметра функции myfunction
. Таким образом, если вам нужно было связаться с ресурсом сценария, который размещен в другом домене, с помощью простого тега script
, и этот ресурс вернул данные JSONP, то вы можете просто определить функцию myfunction
, которая принимает объект JSON, а затем выполнить что-то с этим. JQuery поддерживает вызовы JSONP Ajax с использованием метода getJSON . Вместо вызова AJAX jQuery вставляет тег script
, указывающий на URL-адрес, с которого вы пытаетесь получить данные. Когда скрипт загружается, ваша функция обратного вызова выполняется и вуаля! - у вас есть данные JSON! Эта техника имеет 3 предпосылки.
- Служба, из которой вы пытаетесь запросить данные, возвращает JSON (по умолчанию или по запросу с использованием параметра).
- Служба поддерживает JSONP, позволяя вам указать функцию обратного вызова для обтекания данных JSON.
- Вы достаточно доверяете этому внешнему источнику, чтобы его код мог выполняться на вашем сайте.