JQuery AJAX-запрос не оценивает скрипт в другом домене? - PullRequest
1 голос
/ 24 августа 2011

Итак, этот вопрос говорит мне, что ajax-запросы jQuery не вставляют теги сценария в DOM, но вместо этого jQuery оценивает их.Я загружаю некоторый контент в div, и в этом div у меня есть несколько кнопок любезно предоставленных AddThis.Код для этих кнопок включает скрипт из http://s7.addthis.com. jQuery, по-видимому, не оценивает этот скрипт, я не вижу свои кнопки.Он с радостью оценивает другой скрипт из моего собственного домена, который загружен в тот же запрос.

Есть ли способ указать jQuery для оценки скриптов из других доменов, или есть веская причина для такого поведения, что означает, что мне нужносделать это по-другому?

Спасибо за чтение.

1 Ответ

2 голосов
/ 24 августа 2011

jQuery ajax метод абстрагирует большую часть платформы и использует специфику прецедента создания любого типа асинхронного веб-запроса .

Вы можете вызвать ajax метод с различными комбинациями параметров, и каждый раз за кулисами будет выполняться совершенно другой рабочий процесс (синонимы для которого включают jQuery.get(), jQuery.post(), jQuery.getJSON(), jQuery.getScript()).

В тех случаях, когда вы делаете запрос на веб-страницу в том же домене , что итекущей страницы, то jQuery не будет использовать теги <script>, если это не указано специально (путем установки crossDomain в true).Вместо этого он будет использовать традиционный метод AJAX;либо XMLHttpRequest Object (и отступить к различным реализациям Microsoft ActiveX).

Однако в ситуациях, когда вы делаете запросы к различным доменам , это невозможно использовать эти методы из-за одинаковой политики происхождения во всех современных браузерах.В этих обстоятельствах jQuery.ajax будет прибегать к использованию тегов <script> (техника называется JSONP).

JSONP требует, чтобы ответ от сервера был сформулирован особым образом;а именно действительный JavaScript, который не является вашим ответом.Важно отметить, что JSONP требует взаимодействия сервера в этом.Подробнее читайте в этом вопросе / ответе или в Википедии .

Ваш код работает в вашем домене, поскольку не требуется, чтобы ответ отСервер действительный JavaScript (который не является).Однако, когда ajax () запускается автоматически с использованием JSONP, вы не соответствуете действующим требованиям JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...