Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Коммуникация с удаленным сервером - не работает, помогите новичку 
:(
    Опции темы
Larrr
Дата 26.5.2009, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 29.1.2006
Где: Прага

Репутация: 1
Всего: 2



Привет, такое дело. Хочу подгрузить данные с сервера с помощью ajax. На сервере лежит скрипт, который, допустим, возвращает "hello world". То есть когда я вбиваю с браузер myserver.com/br?param=x , то в браузере появляется нужный текст. Но вот код (см. ниже) - не работает. Буду очень благодарна, если кто-то подсткажет в чем проблема.

Код


<script type="text/javascript">

var xmlHttp;
var catPlaceHolder;

function showCategories(requestUrl, placeHolder)
{
    xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null)
    {
        alert("Some problems with Ajax");
        return;
    }

    catPlaceHolder = placeHolder;
    xmlHttp.onreadystatechange = stateChanged;
    xmlHttp.open("GET", requestUrl, true);
    xmlHttp.send('');
    
}

function stateChanged()
{
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
    {
        document.getElementById(catPlaceHolder).innerHTML = xmlHttp.responseText;
    }
}

function GetXmlHttpObject()
{
    var objXMLHttp = null;
    if (window.XMLHttpRequest)
    {
        objXMLHttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    return objXMLHttp;
}



</script>




Код


<body onload="showCategories(' myserver.com/br?param=x', 'categories')">

<div id="categories">
</div>

</body>




Функция stateChanged() никогда не вызывается. На самом деле оно подвисает уже на xmlHttp.open("GET", requestUrl, false);    - если за ним поставить alert, то он никогда не вызывается . Не могу понять почему - ведь если тот же запрос вбивать прямо в адресную строку, нужный текст возвращается.

Это сообщение отредактировал(а) Larrr - 26.5.2009, 12:58
PM MAIL WWW ICQ   Вверх
Larrr
Дата 26.5.2009, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 29.1.2006
Где: Прага

Репутация: 1
Всего: 2



Вопрос решился. Проблема оказалась в том, что XMLHttpRequest может работать только с тем же сервером, где расположен скрипт.

Больше (на английском) тут:

http://www.xml.com/pub/a/2005/11/09/fixing...ed-harmful.html
PM MAIL WWW ICQ   Вверх
Wowa
Дата 26.5.2009, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(Larrr @  26.5.2009,  19:21 Найти цитируемый пост)
Проблема оказалась в том, что XMLHttpRequest может работать только с тем же сервером, где расположен скрипт.

именно так. Используй jQuery, внем есть поддержка работы с чужим сервером.

PM WWW   Вверх
skyboy
Дата 26.5.2009, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 3
Всего: 260



Цитата(Larrr @  26.5.2009,  19:21 Найти цитируемый пост)
Проблема оказалась в том, что XMLHttpRequest может работать только с тем же сервером, где расположен скрипт.

для полноты картины:
1. это не "проблема". это ограничение безопасности. вполне здравое, но отходящее в прошлое. в смысле, что в движке gecko(рано или поздно - и в остальных появится) уже есть(или только будет? у меня Firefox 3.1, я за последними версиями не гонюсь) механизм cross site xmlhttprequest - удобство преобладает над безопасностью.
2. есть возможность реализовать запрос к другому серверу не через xmlhttprequest, а через iframe или динамически создаваемый <script>. а можно не изобретать велосипед и воспользоваться готовыми решениями(причем, необязательно как надстройка над jquery или prototype)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.