Обновление сообщений без обновления страницы

1. Мага (18.08.2011 / 23:52)
Это возможно на php? Аналогично вконтакте, обновление стены без обновления страницы.

2. Алекс (18.08.2011 / 23:59)
На веб версии возможно.

3. Мага (19.08.2011 / 00:01)
web-версия php что ли? Можно подробнее?

4. Андрей (19.08.2011 / 00:03)
На веб сайтах возможно, на вап нет смысла, т.к. мобильные браузеры не поддерживают эту технологию.

5. Мага (19.08.2011 / 00:06)
Многие мобильные уже поддерживают все вкусности веб, в том числе и flash, и ajax. Мне для общего развития, вдруг будет, где применить.

6. ramzes (19.08.2011 / 00:20)
Аякс нужен

7. Мага (19.08.2011 / 00:24)
Так и думал. Кто-нибудь реализовывал, например, подгрузку сообщений в чате?

8. ramzes (19.08.2011 / 00:26)
Конечно, там в принципе ни чего сложного

9. Мага (19.08.2011 / 00:27)
Не мог бы объяснить,как реализовывал, или статью с примерами? Сам ничего толкового не нашел.

10. ramzes (19.08.2011 / 00:37)
http://phpworking.ru/javascript/ajax/otpravka-post-zaprosa-bez-perezagruzki-stranicy-ajax/
почитай

11. Мага (19.08.2011 / 00:39)
Спасибо, ушел читать...

Добавлено через 04:51 сек.
То есть я так понял, нужен php-файл выводящий нужную инфу без какого-либо оформления, а js-скрипт инклудит php-скрипт на страницу?

12. Саня (19.08.2011 / 01:07)
Ну ты отправляешь AJAX запрос на скрипт *.php , он обрабатывает запрос и в зависимости от того что тебе нужно возвращает результат (текст, картинки) обратно на веб страницу

13. ramzes (19.08.2011 / 01:17)
11. WolfEYE,
p1 - страница
p2 - малая страница
ajax посылает запрос с данными со страницы p1 на p2
и возвращает то что ему выдала страница p2
считай что в фоне открылось еще одно соединение (сессии и прочее не передаются в запросе если явно не передать)
то же и с данными (т.е в p2 для запроса к бд необходимо создать подключение к бд, от p1 оно не передается)

14. Мага (19.08.2011 / 04:57)
То есть сессия авторизации, например, в чате, не передается на малую страницу? Если на малой странице обычная проверка сессии как и на всех страницах чата, то пользователь при подгрузке малой странице эту проверку на ней не пройдет?

15. Валерий (19.08.2011 / 09:40)
Как не передается? Передается вроде.. И куки и сессии.. И заголовки все теже самые
Про бд не понял.. Как подключение может передаться..

16. Мага (19.08.2011 / 19:28)
Что-то никак не получается... Напишите, пожалуйста, код вывода и обновления через каждые пять секунд на одну страницу содержимого другой страницы.

17. ramzes (19.08.2011 / 23:11)
valerik (19 Августа 2011 / 09:40)
Как не передается? Передается вроде.. И куки и сессии.. И заголовки все теже самые
Про бд не понял.. Как подключение может передаться..
куки вообще браузер хранит а не страница,они по определению не хранятся.
сессия без старта и ид тоже не появится.
про бд именно что не может, автор же только знакомится с аяксом, просветил

Добавлено через 00:28 сек.
WolfEYE (19 Августа 2011 / 19:28)
Что-то никак не получается... Напишите, пожалуйста, код вывода и обновления через каждые пять секунд на одну страницу содержимого другой страницы.
могу на jquery написать

18. ramzes (19.08.2011 / 23:22)
<script>
function updData(){
$.ajax({  
                url: '/update.php',  /* url p2 */
                cache: false,  
                        success: function(html){ /* result from p2 */
                        $('#update-block').html(html);  /* insert update data to block */
 $('#update-block').append(html);  /* add to end update data to block */
из этих двух строк выбрать только одну (1: полная замена содержимого блока, 2: добавление к содержимому в конец блока) другую строку убрать
                        }  
                    });
}
$(document).ready(function(){  /* start function onload p1 */
setTimeout('updData()', 5000) ; /* timeout restart function on 5sec */
}
</script>

<div id="update-block"></div>
что бы работало необходимо подключить библиотеку до использования скрипта (в <head> * </head> страниц )
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.js"></script>


19. Мага (24.08.2011 / 01:15)
Вот как раз так и сделал пару дней назад) спасибо. Вот только еще проблема: у меня единожды подключается jQuery и два скрипта обращения к разным php-файлам. Из них почему-то работает только один, который ниже.

Добавлено через 03:11 сек.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>
<link rel="shortcut icon" href="/favicon.ico"><title>Chat</title><link rel="stylesheet" href="/design/black/style.css" type="text/css">
</head><body><div class="cs" id="up" align="center"><img src="/logo.png" alt=""><br>by BORZ aka Wolf EYE</div><div><script type="text/javascript" src="jquery.js"></script>  
    <div id="content"></div> 
          
          <script type="text/javascript" src="1.js"></script><font color="blue">Привет, BORZ!</font><br><a href="pages/profile.php">Мой профиль</a> <b>|</b> 
<a href="exit.php">[Выход]</a><br>
    
<br><form action=add.php?room=chat method=POST>

<textarea cols=25 rows=5 name=msg class="cs"></textarea><br><input type=submit value="Написать" class="a"><br><br><script type="text/javascript" src="chat.js"></script><div id="chat"></div>
<div id="result"></div><div class="a"></div><a href="pages/smiles.php">Смайлы</a><br><a href="pages/history.php?room=chat">История</a></div><div class="lol" id="down"><p align="center"><a href="/?">Наш ЧятЪ :) </a><br></p></div><div align="center">Страница сгенерирована за 0.0060141 сек.<br><br>
<a href="http://vk.com/linkin_borz"><b>Created by Магомед Батукаев</b></a></div></body></html>

Добавлено через 05:07 сек.
Вот когда chat.js не подключен, 1.js прекрасно работает. Когда подключен, 1 не работает, chat работает.

20. Мага (24.08.2011 / 01:22)
Содержимое 1.js:
function show()  
        {  
            $.ajax({  
                url: "1.php",  
                cache: false,  
                success: function(html){  
                    $("#content").html(html);  
                }  
            });  
        }  
      
        $(document).ready(function(){  
            show();  
            setInterval('show()',8000);  
        });  
Содержимое chat.js:
function show()  
        {  
            $.ajax({  
                url: "chat.php?data=chat",  
                cache: false,  
                success: function(html){  
                    $("#chat").html(html);  
                }  
            });  
        }  
      
        $(document).ready(function(){  
            show();  
            setInterval('show()',8000);  
        });  


21. ramzes (24.08.2011 / 01:56)
у тебя 2 функции с одинаковыми именами, так нельзя

22. Игорь (24.08.2011 / 03:43)
20: WolfEYE, или введи переменные:
function show(url, div)   
        {   
            $.ajax({   
                url: url,   
                cache: false,   
                success: function(html){   
                    $(div).html(html);   
                }   
            });   
        }   
       
        $(document).ready(function(){   
            show();   
            setInterval('show()',8000);   
        }); 


23. Анатолий (24.08.2011 / 10:42)
22, немного проапгрейдим smile

function show(url, div, interval)    
        {    
            $.ajax({    
                url: url,    
                cache: false,    
                success: function(html){    
                    $(div).html(html);    
                }    
            });  
            setInterval('show()', interval);   
        }    
        
        $(document).ready(function(){    
            show();       
        }); 


24. Игорь (24.08.2011 / 12:00)
23: dekameron, можно и так) у него просто время одинаковое было, вот я и не стал его вводить.

25. Анатолий (24.08.2011 / 14:06)
24. rezent, Интервал в аргументах - это не основное, a setInterval в теле функции позволяет вызвать ее одним show(), а значит можно применять с live().

Да и в общем код без "деревьяно" вписаных параметров выглядит как-то более гибким smile

26. Мага (24.08.2011 / 15:08)
Всем большое спасибо, парни, очень помогли. Стал умнее на нанограмм)
Мне также интересно, как реализовывается функция вставки смайлов кликаньем по ним мышью, а не вводом "двоеточие + имя смайла"?

27. Мага (24.08.2011 / 15:48)
Со смайлами разобрался. Теперь интересует подгрузка контента по клику, как подгружать я понял, но как заменять ссылку "Открыть" на "Закрыть" и скрыть контент по клику на "Закрыть"?

Добавлено через 01:52 сек.
    <a href="#" id="getContent">Загрузить контент</a>
    <div id="divContent"></div>
    $(document).ready(function(){
    $('#getContent').click(function(){
    $.ajax({
    url: "/content.php",
    cache: false,
    beforeSend: function() {
    $('#divContent').html('Получаем контент');
    },
    success: function(html){
    $("#divContent").html(html);
    }
    });
    return false;
    });
    });


28. Мага (24.08.2011 / 20:52)
Простите конечно, но сколько не искал - ничего не понял) поэтому поднимаю тему.

29. Мага (24.08.2011 / 22:28)
Нет, все-таки не разобрался со смайлами)) помогите.

30. ramzes (24.08.2011 / 22:38)
смайлы
              function past(text1, text2) { 
if ((document.selection)) { 
document.form.message.focus(); 
document.form.document.selection.createRange().text = text1+document.form.document.selection.createRange().text+text2; 
document.form.message.focus(); 
} else if(document.forms['form'].elements['message'].selectionStart!=undefined) { 
var element = document.forms['form'].elements['message']; 
var str = element.value; 
var start = element.selectionStart; 
var length = element.selectionEnd - element.selectionStart; 
var over = length + text1.length +  text2.length + start;
element.value = str.substr(0, start) + text1 + str.substr(start, length) + text2 + str.substr(start + length);

 var end = document.form.message.value.length;
 document.form.message.setSelectionRange(end,over);
 document.form.message.focus();

} else document.form.message.value += text1+text2; 

}
открыть / закрыть одной функцией делай, если открыто закрываем, иначе наполняем и открываем

URL: https://visavi.net/topics/24205