Извините, если мой английский не идеален, как я вижу, я не достаточно ясно ... Одна из моих основных проблем объясняется здесь другим человеком: http://forum.jquery.com/topic/cross-domain-ajax-and-ie
Итак, какая альтернатива существует?
1) XDomainRequest
Лично я считаю, что это лучший способ реализовать межсайтовый скриптинг в IE8 + (так как он поддерживается изначально). Единственная проблема заключается в том, что это только для Microsoft. Но, как и многие другие вещи с семейством IE, мы можем легко расширить функциональность JQuery ajax.
В соответствии с документацией вам необходимо указать дополнительные заголовки в domain1.tld, например, , в PHP , например:
header("Access-Control-Allow-Origin: http://domain2.tld"); //use * for any
Может быть, следующая альтернатива полезна для обеспечения реализации jquery XDomainRequest;
Обновление (a): Существует библиотека XDR (не-jquery), которая "заменяет" класс XHR, чтобы сделать его кросс-браузерным, он основан на Клиентская библиотека pmxdr . Я еще не пробовал.
2) CORS
Единственная проблема с этим плагином заключается в том, что он не является расширением, поскольку его функции называются по-разному, поэтому вам нужно либо изменить коды, либо обернуть этот плагин.
Обновление (b): Я изменил плагин CORS, чтобы упростить его. Проверьте мой другой ответ, чтобы получить код.
3) JsonP в JQuery
Это должен быть самый простой способ решения моей проблемы (так как у меня есть контроль над обоими серверами). В большинстве браузеров поддерживается межсайтовый скриптинг, только если используется формат json (я думаю, что xml также можно использовать). В этом случае используется функция $ .getJSON (). Чтобы это работало, вам нужно указать (как указано в документации) callback =? в URL, например:
$.getJSON("http://domain2.tld/index.php?callback=?",funciton(res){ ... });
"?" после того, как «обратный вызов» будет заменен идентификатором ... в вашем php-файле, вам нужно получить этот идентификатор и окружить код Json следующим образом:
print_r($_GET["callback"])."(".json_encode($mydata).");";
(я получил этот пример от здесь )
Проблема с этим методом в том, что если вы хотите извлечь только HTML, он должен находиться внутри объекта json, что делает процесс немного более сложным и подавляющим.
4) Плагин jquery.jsonp
Если вам нужны дополнительные проверки и функции для встроенной поддержки JSONP в JQuery, попробуйте этот плагин, который также упростит процесс.
5) xdomainajax
Этот плагин использует интересный подход с использованием сервиса Yahoo YQL, в котором любая веб-страница (или ее часть) может быть преобразована в Json, что позволяет импортировать ее в javascript. Этот метод хорош для тех ситуаций, в которых вы не можете изменить формат источника.
6) flXHR
Это решение использует вспышку (SWF) для достижения магии. Я мог бы сказать, что это очень быстрый способ достижения почти полностью кросс-браузерной реализации (так как он опирается на поддержку Flash). Этот метод может быть идеальным для тех сайтов, на которых будет присутствовать флеш (наверняка). Однако, если ваш сайт не требует флеш-памяти, это становится основным недостатком, поскольку у пользователей должна быть установлена флеш-память, чтобы это работало.
7) xdajax
Это решение основано на реализации YUI вместе с подходом «Flash».
8)
Если ни один из предыдущих вариантов не подходит для вас, помните, что вы все еще можете использовать старый прием вставки тега для импорта кода JS.
9) Снижение безопасности IE до минимума также решит проблему. Но я думаю, что было бы нехорошо иметь такое сообщение: «Пожалуйста, уменьшите настройки безопасности, чтобы использовать этот сайт» ... lol
Я надеюсь, что это может помочь другим в подобной ситуации.