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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XMLHttpRequest, нужен конкретный пример (для чата) 
V
    Опции темы
Gold Dragon
Дата 10.1.2006, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Почитал многое что было написано о XMLHttpRequest , но ничего не понял... вернее не понял как это применять.

Может кто внятно и человеческим языком покажет на примере (прошу не давать на ссылки).

Например: на страницу каждые 20 секунд должны с новой строчки дописываться данные с сервера (пусть это будет случайное число, которое генериться в скрипте на сервере)



PS
буду очень признателен, если кто выложит чат на XMLHttpRequest


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 11.1.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



тему поднимаю... Может кто-то что-то скажет? smile


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Sardar
Дата 12.1.2006, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Gold Dragon извини, но так много было обсуждено, просто пользуйся поиском. Также стукни к Opik'у, Elfet'у и другим, что уже чаты сделали. У Opik'a лучше, ибо юзает XML (как и положено), а не eval(reg.responseText) что даже отдельных слов не заслуживает для своей оценки...


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Gold Dragon
Дата 12.1.2006, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Sardar
да втом то и дело, что пользовался поиском, но ничего толкового не нашёл (или не понял), везде по чуть-чуть


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Black
Дата 12.1.2006, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


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

Репутация: 4
Всего: 45



Sardar
Я тоже в чате использую reg.responseText и не вижу в этом ничего плохого. Для меня главное сократить траффик. А с XML больше траффика выходит.

Хотя, согласен с тобой, что с XML - более правильно. Хотя не обязательно делать чат XML.


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Sardar
Дата 12.1.2006, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(Black @ 12.1.2006, 17:21 Найти цитируемый пост)
Хотя, согласен с тобой, что с XML - более правильно

Идея не в том что правильно, а в том что удобно. Вот ты подгрузил текст, или регами или eval'ом получил массив, скриптами отформатировал и поставил. А не подумал о том что XSL это гораздо удобней, клиентская логика упрощаеться то пары строк, применил стиль и всё. При чём меняя стили/вёрстку меняем внешний вид месаги, не влезая в JS код.

Xотя кому как, можно и решетом воду носить, было бы желание smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Gold Dragon
Дата 13.1.2006, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Народ, я всё конечно понимаю, но можно что-нибудь по сути вопроса


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Cheba
Дата 13.1.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

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



Конкретный пример (без кода).
Твой же чат.
Каждые 20 сек вызывается функция (на таймере висит она). Эта функция спрашивает у сервера все изменения, которые произошли за последние 20 сек. Сервер возвращет пачку новых строк. Твоя функция эту пачку красиво дописывает в конец разговора.

Чем же это отличается от обчного рефрешевого чата? Ну, хотябы тем, что невыкачивается каждый раз весь разговор, а только та часть, которая добавилась/изменилась со времени последнего опроса сервера.

Чем это отличается от обычного потокового чата? А тем, что поток считывания не открыт постоянно. Он закрываеся сразу после загрузки всего необходимого на клиент. А потом сервер регулярно опрашивается на предмет изменений.

Применений у XMLHTTPRequest просто масса. Вот я только-что описал чат на нем. А вообще-то его можно применять для самых разных целей. Основная идея состоит в том, что нам не приходится загружать сразу кучу данных, чтобы потом их отображать по запросу пользователя. И не приходится на малейшее действие пользователя реагировать перезагрузкой страницы. У нас всегда в броузере имеется страница, которая управляет отображением данных. Сами же данные подтягиваются через этот объект с сервера по мере надобности. Таким образом пользователь получает данные быстрее (страница не перезагружается - с сервера берутся только данные) и только те, которые ему нужны.
PM MAIL ICQ   Вверх
Gold Dragon
Дата 13.1.2006, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Cheba
Принцип действия я понял, у меня проблемы с написанием этого.. Какие примеры не пробывал, почему-то не хочет всё работать. Вот и предложил показать пример, чтоб понять и дальше использовать


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Cheba
Дата 13.1.2006, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

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



Ну, что же... Тогда держи вот пример с кодом. smile

Серверная часть (time.php) - отдает данные. В общем случае она должна смотреть на то, что у нее просят и в зависимости от запроса формировать данные. У меня же просто выдается XML с датой и времененм:
Код
<?php
header('Content-Type: application/xml');
header('Cache-Control: no-cache');
echo '<?xml version="1.0" encoding="UTF-8"?>
<data>
    <time>';
    echo date("H:m:s");
    echo '</time>
    <date>';
    echo date('d/m/Y');
    echo '</date>
</data>';
?>


А вот клиентская часть. По нажатию кнопки будешь получать текущее врем и дату сервера.
Код
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US">
<head>
    <title>AJAX Example</title>
    <!--<script language="JavaScript" type="text/javascript" src="ajax.js"></script>-->
    <script type="text/javascript" language="javascript">
    <!--
    var http_request = false;

    function getTime(url)
    {

        http_request = false;

        if (window.XMLHttpRequest)
        { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
        }
        else
            if (window.ActiveXObject)
            { // IE
                try
                {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch (e)
                {
                    try
                    {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch (e) {}
                }
            }

        if (!http_request)
        {
            alert('Сдаюсь :( Не могу создать объект XMLHTTP');
            return false;
        }
        
        http_request.onreadystatechange = alertContents;
        http_request.open('GET', url, true);
        http_request.send(null);

    }

    function alertContents() {
        if (http_request.readyState == 4)
        {
            if (http_request.status == 200)
            {
                var xmldoc = http_request.responseXML;
                //if (xmldoc == null) alert('!!!');
                var time = xmldoc.getElementsByTagName('time')[0].childNodes[0].nodeValue;//document.documentElement.childNodes[1].innerHTML;
                var date = xmldoc.getElementsByTagName('date')[0].childNodes[0].nodeValue;
                
                document.getElementById('display').innerHTML = 
                   'Time: ' + time + '<br />' +
                   'Date: ' + date;
            } else {
                document.getElementById('display').innerHTML = 'There was a problem with the request.';
            }
        }

    }
-->
</script>
</head>
<body>
    <div id="display"></div>
    <input type="button" name="getTime" value="Get Time" onclick="getTime('time.php')"/>  
</body>
</html>


Складываешь все это рядышком на сревере. Открываешь html-файл и давишь кнопку. Ну, и видишь результат, конечно.

Проверялось на Лисе 1.5 и ИЕ 6. Работает. Будут конкретные вопросы - дам конкретные ответы. smile
PM MAIL ICQ   Вверх
Gold Dragon
Дата 17.1.2006, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Cheba
Что-то тишина smile Кнопка есть, а скрипт молчит

вот криплю свои файлы (вдруг где ошибся)

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  www.zip 1,26 Kb


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 17.1.2006, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Всё народ, пример Cheba отлично работает (проблема была как всегда в лишних пробелах).

Принцип уяснил... Буду творить дальше


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
R.M.
Дата 18.1.2006, 02:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


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

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



А если обновить страницу то вся инфа скидывается. Этого можно както избежать?


--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 18.1.2006, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



вот нашёл ещё очень хорошее объяснение с примером

http://mysitez.km.ua/Programming/?jshttpsend

надеюсь что ссылка будет долгое время рабочей


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Cheba
Дата 18.1.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

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



Цитата(Куксикус @ 18.1.2006, 02:48 Найти цитируемый пост)

неработает

1) у тебя урл не указан, наверное.
2) вторым параметром лучше передавать целое число, а не строку. Просто чтобы было удобней читать.
3) 1 - это сильно мало. У тебя броузер нагнется. Попробуй поствить хотябы секунду - 1000 милисекунд.
4) не помешало бы почитать документацию. Там хотябы параметры методов описаны описаны...
PM MAIL ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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