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

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

17.08.2016, 10:09. Показов 773. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru