Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   прокрутка сообщений чата (https://javascript.ru/forum/misc/71452-prokrutka-soobshhenijj-chata.html)

laimas 20.11.2017 12:40

Цитата:

Сообщение от mikello
$name = htmlspecialchars($name); // заменяем опасные теги (<h1>,<br>, и прочие) на безопасные

Это делается при выводе из базы, а не при сохранении.

mikello 20.11.2017 12:41

Не помогло.
Вообще странно это, т.к. при первой загрузке (Load(1)) прокручивает до последнего сообщения.

mikello 20.11.2017 12:45

Ещё заметил, что функция Send при нажатии на Отправить происходит с некоторой задержкой.

Nexus 20.11.2017 12:49

mikello, замените в index.php это:
setInterval("Load();", 1000); // создаём таймер который будет вызывать загрузку сообщений каждые 2 секунды (2000 миллисекунд)

На это:
setInterval("Load(1);", 1000); // создаём таймер который будет вызывать загрузку сообщений каждые 2 секунды (2000 миллисекунд)


Кривой чат, имхо.

laimas 20.11.2017 12:57

Цитата:

Сообщение от mikello
Не помогло.

Это ответ на мой комментарий? А это не относится к проблемам на клиенте, это к вопросу хранения данных. БД может хранить в себе любые "колющие и режущие" сущности, ей без разницы тег это или текст обычный. А преобразованные в html мнемоники символы сохраненные в базе могут быть источником проблем, к примеру при поиске в ней.

Все таковые преобразования делаются при выводе в браузер.

mikello 20.11.2017 13:06

Нет , это ответ на другой комментарий, не ваш.

Nexus, теперь если я хочу просмотреть ранние сообщения я этого сделать не могу, т.к. полоса прокрутки съезжает вниз каждые 1000 мс

mikello 20.11.2017 13:08

Цитата:

Кривой чат, имхо.
Я его в интернете нашел, писал не сам. Просто для того, чтобы разобраться в коде.

Nexus 20.11.2017 13:10

mikello, тогда верните как было и замените отправку post запроса в функции "send" этим:
$.post("ajax.php", {
        act: "send", // указываем скрипту, что мы отправляем новое сообщение и его нужно записать
        name: $("#pac_name").val(), // имя пользователя
        text: $("#pac_text").val() //  сам текст сообщения
    },
    function() {
        Load(1); // по завершению отправки вызываем функцию загрузки новых сообщений Load()
    })

mikello 20.11.2017 13:15

Работает, спасибо большое!

А чем ваш код отличается от второго?:
Цитата:

$.post("ajax.php", {
act: "send", // указываем скрипту, что мы отправляем новое сообщение и его нужно записать
name: $("#pac_name").val(), // имя пользователя
text: $("#pac_text").val() // сам текст сообщения
},
function() {
Load(1); // по завершению отправки вызываем функцию загрузки новых сообщений Load()
})
Цитата:

$.post("ajax.php", {
act: "send", // указываем скрипту, что мы отправляем новое сообщение и его нужно записать
name: $("#pac_name").val(), // имя пользователя
text: $("#pac_text").val() // сам текст сообщения
},
Load(1))

Nexus 20.11.2017 13:36

Цитата:

Сообщение от mikello
А чем ваш код отличается от второго?:

Тем, что функция "Load" запускается после завершения запроса к серверу, а не вместе с ним.


Часовой пояс GMT +3, время: 15:43.