Как использовать jQuery AJAX для внешнего домена?

Я пытаюсь выполнить простую попытку jQuery AJAX, используя либо .get (), либо .post ().

Если у меня есть локальная копия на моем сервере и выполните:

$.get('/hash.php',...,...) 

Я отслеживаю в своей консоли в firebug, что это делается, и я получаю ответ.

Все, что я меняю, это URI для внешнего сервера, и ничего не происходит.

 $.get('https://secure.mysite.com/subdir/hash.php',...,...) 

Не помогает, если я беру его 's' или если я использую пост вместо этого. Мне не хватает какого-то параметра, который я должен использовать в jQuery?

EDIT: Я забыл упомянуть причину, по которой я это делаю, потому что я, в конечном счете, перехожу с сайта PHP4 на сайт PHP5, но сейчас для реального PHP4-сайта нужна функция, которая не находится в PHP4. Поэтому я вызываю сервер PHP5 для этого. Я думаю, что у меня хорошее обходное решение. Благодаря!

Вы не можете отправить запрос Ajax другому домену, чем другой, на котором развертывается ваше приложение. Это связано с той же политикой происхождения, реализованной в веб-браузерах – мерой безопасности.

Однако есть два возможных решения:

  • отправив запрос на ваш собственный сервер, который будет выступать в качестве прокси-сервера другому (либо через PHP-скрипт, либо, лучше, используя некоторый модуль mod_proxy_http от Apache)
  • или не использовать «Ajax», но другие методы, такие как динамическое создание тегов <script> которые не подпадают под ограничение SOP.

Это правда, что вы обычно не можете делать Ajax вне своего домена из-за браузеров. Однако, используя JSONP, это можно сделать. Теперь jQuery также имеет параметр jsonp для Ajax. Для выполнения этой работы вам нужно управлять выходом сервера.

Javascript не может получить доступ к серверу за пределами того, откуда появился файл javascript.

Это функция безопасности.

В зависимости от того, как вы будете использовать браузер, вы можете обойти это, но это становится немного скользким уклоном.

Вы не можете напрямую выполнять запросы ajax для перекрестных доменов, это будет проблемой безопасности.

Вам нужно будет вызвать локальный php-файл из jquery и поговорить с файлом php в другом домене.

Существует метод JSONP, который используется для обхода этого. См. Второй ответ на SO # 570100