Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: для новичков > динамическое обновление textarea |
Автор: begin 25.6.2009, 17:52 | ||
Пишу систему сообщений для сайта. На странице есть форма. В ней textarea и кнопка отправки. Должно происходить два вида событий: 1. при нажатии на кнопку отправки выполняется пхп-код, а затем динамически обновляется содержимое textarea 2. при бездействии пользователя каждую минуту динамически обновляется содержимое textarea Нашел вот такой пример:
Но есть вопросы: 1. нужно ли подгружать какую-либо библиотеку 2. как сделать автовызов через определенные промежутки времени 3. где вставить вызов пхп-кода (при отправке нового сообщения от пользователя на сервер) И общий вопрос: насколько такой механизм повысит нагрузку на сервер и насколько он увеличит трафик? |
Автор: bars80080 25.6.2009, 17:56 |
1. нет 2. setInterval('load()', 60000); 3. "test-request.html" - вот вызов страницы. напиши адрес своего скрипта заместо неё |
Автор: begin 27.6.2009, 01:04 | ||||
Понял. Еще вопрос: там в коде есть вот такая строка:
Но мне надо вызывать скрипт методом POST и с параметрами. Как мне это сделать?
а вот как передать параметры? |
Автор: bars80080 27.6.2009, 14:35 | ||||
где data - твои параметры в виде:
|
Автор: begin 27.6.2009, 15:49 | ||||
Скажите, а длина переменной дата неограничена? Просто такой синтаксис больше похож на GET, а там ведь есть ограничение браузера на длину строки. Тут такого не возникнет? |
Автор: bars80080 27.6.2009, 19:29 |
не ограничена. разница между get и post, не в том как они отправляют параметры, а в том, где они их отправляют. в случае get-запроса данные находятся прямо в адресе запроса, а в случае post-запроса, они находятся в "теле", т.е. идут после первичных заголовков. а скреплены с помощью & они так же Добавлено через 1 минуту и 30 секунд хотя вру, ограничена директивами .htaccess и настройками сервера (несколько мегабайт). как ограничение на размер закачиваемых файлов |
Автор: begin 28.6.2009, 21:50 | ||
Все сделал, но вот проблема. В коде написал так:
У текстового поля для нового сообщения имя такое: text_new Так вот скрипт message2.php не видит ни переменную $_POST['id'] ни переменную $_POST['text_new'] Подскажите, почему? |
Автор: bars80080 29.6.2009, 00:16 | ||
message2.php точно запускается? а если указать абсолютный адрес? и добавьте случайный параметр:
|
Автор: begin 29.6.2009, 01:14 |
Да, message2.php точно запускался - я специально выводил надпись перед запросом к базе. Итог: видна надпись, а далее сообщение об ошибке в запросе (из-за тех недостающих данных). Все это как и надо, выводилось в первом textarea. Когда сделал по вашему последнему совету, то туда тебе грузится главная страница сайта - т.е. ведет себя, как будто вообще не находит такой скрипт. Может из-за абсолютного адреса, а может из-за параметра в адресе. Главное то - что все данные теряются. ![]() |
Автор: An6rey 29.6.2009, 03:08 |
Для запроса GET строку параметров присоединяй к URL в open Для запроса POST стрку параметров передавай в send() By the way - запросы POST не кэшируются и случайный парметр не нужен |
Автор: begin 29.6.2009, 03:39 | ||||
An6rey, вот же я попробовал и отписался - скрипт не видит поступающих данных ни из формы ни из send ![]() |
Автор: An6rey 29.6.2009, 12:57 |
begin Так не бывает Выкладывай все - лучше в архиве - найду причину Или ты прикалываешься? |
Автор: begin 29.6.2009, 15:35 | ||
Выкладываю: |
Автор: An6rey 29.6.2009, 22:54 |
xmlDoc.setRequestHeader("Content-Type","application/x-www-form-urlencoded") А ты как думал? |
Автор: begin 29.6.2009, 23:19 | ||
Подскажите, где именно в коде java-скрипта нужно вставлять эту строку? После какой строки? |
Автор: An6rey 29.6.2009, 23:32 |
после open и до send |
Автор: begin 30.6.2009, 01:07 |
Спасибо, частично помогло: параметр $_POST['id'] уже виден. Но все еще не виден параметр $_POST['text_new'] - содержимое textarea, в котором пользователь набирает сообщение. В теле скрипта я ведь не могу его передать - скрипт объявляется раньше чем само поле. Где же еще одна ошибка? ![]() |
Автор: An6rey 30.6.2009, 01:37 |
Так бывает когда вместо того чтобы изучать технологию пошагово браться сразу за код. Твой инпут будет пересылатья только при сабмите Для передачи его Аяксом его значение нужно извлечь из валуэ и прописать явно в методе сэнд |
Автор: begin 30.6.2009, 02:37 | ||||||
Да, Вы полностью правы. И тепеть вот приходится расхлебывать и Вас напрягать ![]() Насчет текста выкрутился так:
И наконец то все заработало ![]() Огромное спасибо всем, кто помогал ![]() Вот еще хочу посоветоваться. Я хочу, чтобы функция reload вызывалась сама каждые 60 секунд. Для этого после скрипта отправки формы, добавил такой код:
Но почему то ничего само не обновляется ![]() |
Автор: bars80080 30.6.2009, 11:09 |
даже ни одного раза? или всё один раз? для многократного надобно бы setInterval("reload1()", 60000); да и посоветовал бы сменить имя функции на другое, reload явно служебное слово |