Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471

Реализация добавления ответов к комментарию через ajax

17.08.2016, 10:09. Показов 784. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте форумчане. Нужен совет по реализации модуля подгрузки ответов на комментарии.
Есть php код проверки на наличие новых ответов для всех существующих комментариев:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*Модуль обновления ответов в комментах*/
  /*делаем запрос на существование новых ответов по дате последнего обновления*/
  $quote_sql = $sql->run("select * from ".MY_PREFIX."_comments where news_id = ? and quote_id != '0' and date_format(dateAdd,'%Y%m%d%H%i%s')> ? order by id ASC",array($_REQUEST['news'],$_REQUEST['updDate']));
   /*Если есть новые ответы - начинаем обработку*/
   if($quote_sql->rowCount() > 0){
  
      /*начинаем цикл обработки ответов*/
      while ($Rows = $quote_sql->fetch()){
      
      ob_start();                                                                                                 
      $func->Quotes($Rows); /*Это метод, в котором идет разметка и вывод самого ответа*/
      $buffer = ob_get_clean(); /*Каждый ответ с разметкой заносим в переменную, чтобы не выводился на экран*/
      $buffer = str_replace("'","\'",$buffer);
      $buffer = preg_replace("/\r?\n/", "\\n", $buffer);
      }
 
     }
  /*конец модуля*/
Теперь нужно каким то образом, через ajax расставить эти ответы в свои контейнеры, т.е каждый к комментарию, к которому он относится.
Смысл такой:
JavaScript
1
2
3
4
      if(document.getElementById('msg<?=$Rows['quote_id']?>')){/*Проверяем существование контейнера самого комментария */
      var elems = document.createElement("DIV"); elems.innerHTML = '<?=$buffer?>';  /*Создаем элемент и заносим ответ с разметкой*/
       document.getElementById('quoteMsg<?=$Rows['quote_id']?>').appendChild(elems); /*Добавляем вниз в общий контейнер для всех ответов*/
       }
И так для каждого ответа в отдельности.
Вопрос, в том, как правильно это все организовать?
отправлять JSON с массивами данных о id каждого ответа и с содержанием самого ответа или можно как-то проще?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.08.2016, 10:09
Ответы с готовыми решениями:

Ошибка при попытке добавления данных в БД через AJAX
Хочу добавить функцию добавления объявления в Избранное. &lt;div class='adv' id='adv&quot;.$fetch_res_q.&quot;'&gt;&lt;a href='adv.php'&gt; ...

Обноление select после добавления данных через ajax
С сервера пришли данные в формате: &lt;option selected&gt;--&lt;/option&gt; &lt;option selected&gt;info&lt;/option&gt; ... Я их в добавляю в выпадающий...

Реализация отправки запросов к БД через AJAX
Подскажи пожалуйста как сделать оправку данных из формы через ajax, чтоб не перезагружалась страница. Есть вот: &lt;html&gt; ...

7
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
17.08.2016, 10:26
MirDj, да, отправляйте JSON с массивом вида
JSON
1
2
3
4
5
6
[
  {"id":12, "text":"comment text"},
  {"id":34, "text":"comment text"},
  {"id":56, "text":"comment text"},
......
]
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
17.08.2016, 10:28
Цитата Сообщение от MirDj Посмотреть сообщение
нужно каким то образом, через ajax расставить эти ответы в свои контейнеры
а в магазин за пивом вы ajax посылать не пробовали?

ajax отсылает запрос файлу и получает от него ответ в виде строковой переменной -- на этом функциональность ajax'a исчерпывается

распарсить полученный ответ и "расставить кусочки ответа по своим местам" -- это дело яваскрипта, но никак не ajax'a
1
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471
17.08.2016, 12:02  [ТС]
Да, вы правы. Не правильно выразился.

Добавлено через 1 минуту
А дальше эту строку обрабатывать в том же файле где сам ajax запрос был перед возвратом на исходную страницу или нужно эту строку возвращать на исходную страницу а там уже при помощи js все это дело расставлять по своим местам?
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
17.08.2016, 12:11
MirDj, расстановка комментариев по местам должна происходить на стороне браузера с использованием js
0
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471
17.08.2016, 12:25  [ТС]
Цитата Сообщение от Cra3y Посмотреть сообщение
MirDj, расстановка комментариев по местам должна происходить на стороне браузера с использованием js
Только не ругайтесь на мои вопросы, но мне нужно понять логику.
Есть исходная страница в браузере где все комментарии выведены на экран пользователю.
На ней же по таймеру происходит запрос к аяксу, который запрашивает php файл и получает в ответ json. Эта строка доступна в виде
JavaScript
1
this.req.responseText
в js файле, где происходит сам запрос. Далее эта строка отправляется в определенный контейнер.
Так вот этот json нужно уже обрабатывать js в этом контейнере на исходной php странице или на стадии
JavaScript
1
this.req.responseText
до возврата в контейнер?

Добавлено через 6 минут
Или в контейнере уже?
Типа:
JavaScript
1
2
var quote = document.getElementById('conteiner').innerHTML;
var data = JSON.parse ( quote );
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
17.08.2016, 12:32
MirDj, сценарий следующий
  1. отправка запроса на сервер
  2. получение ответа
  3. разбор ответа с использованием JSON.parse
  4. обработка получившегося массива/объекта
  5. отображение результата обработки на странице
0
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471
17.08.2016, 13:00  [ТС]
Спасибо за советы и объяснения, буду пробовать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.08.2016, 13:00
Помогаю со студенческими работами здесь

Вывод всех ответов сервера на ajax
Добрый день! Всегда при валидации небольших форм использовал ajax, через который отправлял POST на сервер, и получал только один ответ....

JQuery.ajax. Как получить от сервера несколько ответов
Здравствуйте Возможно ли послав запрос на сервер получить от него несколько ответов: Клиент: //Посылаем единственный запрос ...

Массив: Реализация системы ответов и вопросов теста...
Всем привет,нужна помощь запутался в том как лучше реализовать работу с массивами, вообщем. Есть база данных в ней 2 таблицы...

Ajax код добавления товара
Добрый день, имеется вот такой ява код // Аяксовая корзина $('form.cart').live('submit', function(e) { e.preventDefault(); ...

Ajax для добавления товаров в корзину
Здравствуйте. Решил сделать авторизацию на сайте без перезагрузки. Вот исходный код перед изменением: &lt;form method=&quot;post&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru