Как сделать ajax-запрос на другой домен?

Вчера по долгу службы пришлось разбираться с кросс-доменными ajax-запросами. Суть проблемы была в следующем: мне нужно было, чтобы мой скрипт отправлял с нескольких сайтов запросы на один сервер, собирающий некоторые данные. Политика безопасности браузеров запрещает это делать через обычный XHTTPRequest.

Погуглив и проведя ряд экспериментов у меня получилось вот что.

Примечание: Ниже я приведу готовое решение. А для желающих обрести теоретическую подкованность, предлагаю к прочтению:

Итак, для отправки запросов я воспользуюсь библиотекой jQuery. С версии 1.2 эта библиотека поддерживает JSONP нативно. Вот, собственно сам код для выполнения запроса:

$.getJSON("http://server.ru/logger.php?callback=?", function(data){
    // тут обрабатываем полученные данные
});

Обратите внимание на параметр «callback=?» в адресе, на который отправляется запрос. Вместо вопроса jquery подставит название callback-функции. Эта callback-функция будет вызвана при получении ответа от сервера. Учтем это в серверной части.

<?php
    echo $_GET['callback']."({param1:'value',param2:0});";
?>

Т.е. выход скрипта должен генерировать не просто JSON, а вызов callback-функции и передачей ей параметров, которые нужно передать от сервера клиенту.

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

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

1 звезда2 звезд3 звезд4 звезд5 звезд (7 голосов, средний: 3.86 из 5)
Loading ... Loading ...

Метки: , ,



3 комментария на “Как сделать ajax-запрос на другой домен?”

  1. Bercut пишет:

    не работает в IE6 из-за ошибки в библиотеке jQuery

  2. Лобач Олег пишет:

    А версия библиотеки какая?

  3. poRAmidol пишет:

    Спасибо, а IE6 идет лесом пусть ;-))

Оставить комментарий