Главная->Уроки по js->Отправка ajax-запроса на другой домен
Отправка ajax-запроса на другой домен
Иногда бывает нужно отправить ajax-запрос на другой домен, чтобы динамически подгрузить оттуда данные. Однако, ajax этого сделать не позволяет в целях безопасности. Но в этой статье я покажу, как это ограничение можно обойти. В основе лежит то, что хоть ajax и не позволяет отправлять запрос на другой домен, но PHP позволяет отправлять что угодно и куда угодно. Итак, алгоритм следующий: Отправить ajax-запрос скрипту на нашем домене. Скрипт на нашем домене отправляет любые запросы на другой домен и получает от него ответ, возвращая его. ajax принимает ответ от нашего скрипта с ответом от другого домена. Вот такой простой алгоритм. Давайте его быстренько реализуем. Значит, сразу ajax: <script type="text/javascript"> /* Данная функция создаёт кроссбраузерный объект XMLHTTP */ function getXmlHttp() { var xmlhttp; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; } function send() { var xmlhttp = getXmlHttp(); // Создаём объект XMLHTTP xmlhttp.open('POST', 'test.php', true); // Открываем асинхронное соединение xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // Отправляем кодировку xmlhttp.send("site=" + encodeURIComponent("http://ya.ru/?a=5")); // Отправляем POST-запрос xmlhttp.onreadystatechange = function() { // Ждём ответа от сервера if (xmlhttp.readyState == 4) { // Ответ пришёл if(xmlhttp.status == 200) { // Сервер вернул код 200 (что хорошо) document.getElementById("yandex").innerHTML = xmlhttp.responseText; // Выводим ответ сервера } } }; } </script> <div> <input type="button" value="Отправить" onclick="send()" /> <div id="yandex"></div> </div> А теперь файл test.php, который и занимается отправкой запроса на другой домен: <?php echo file_get_contents($_POST["site"]); // Отправляем запрос и выводим ответ ?> Всё, теперь при нажатии на кнопку "Отправить" у Вас будет открываться страница "http://ya.ru/?a=5". Как видите, отправить ajax-запрос на другой домен не составляет никакого труда.