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.