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

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

17.08.2016, 10:09. Показов 755. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru