Обновление сообщений без обновления страницы
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, немного проапгрейдим
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().
Да и в общем код без "деревьяно" вписаных параметров выглядит как-то более гибким
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