по замыслу из обработчика должен передаваться готовый блок комментария. в этом блоке через переменную в атрибут data блока передается id коммента плюс переменные юзера, тайтла, поста и тд..тоесть готовый блок html. так же должны работать все кнопки в блоке - тоесть нужно сделать что бы он добавился сразу делегированным в общий блок комментов. передаю черз json но что то не выходит....буду признателен если кто обьяснит детально. долго разбираюсь уже.
- что конкретно не выходит? - где код? телепатов нема..... если про делегирование вопрос..... то обработчик вешайте через $('body').on(****) будет подхватывать и вновь появляющиеся
в общем сейчас я сделал php обработчик, который подцепляет файл шаблона комментария и заносит туда из базы данные в переменные прописанные в шаблоне. все это дело, а это готовый блок получается комментария с данными я отсылаю на клиент и в формате json....и вот в инструментах разработчика отображается как бы комментарий, а как на страницу его вывести над другими комментариями я чет не пойму...есть общий блок всех комментов, но я не могу ни его перезагрузить ни добавить новый коммент клиенту.. вот сейчас пробую разными методами appen html load вывести его, но не выводится..код публикую Код (Javascript): $(document).ready(function() { // Обработчик отправки формы $('.form-comment').submit(function(e) { e.preventDefault(); // Отключение стандартного поведения отправки формы let userId = "<?php echo htmlspecialchars(trim($user_id))?>";//получаем id юзера //let postId = "<?php echo htmlspecialchars(trim($post_id))?>";//получаем id поста // Получение данных формы let formData = new FormData(this); formData.append('user_id', userId);//передаем id юзера в formdata //formData.append('post_id', postId);//передаем id поста в formdata // Отправка данных формы через Ajax $.ajax({ url: 'обработчик комментариев.php', timeout: 20000, // ограничение времени выполнения запроса в 20 секунд type: 'POST', data: formData, processData: false, contentType: false, dataType: 'json', success: function(response) { if (response.success) { let result = JSON.parse(response.comment);//получаем комментарий // Если валидация прошла успешно, выполните необходимые действия $('.form-comment')[0].reset(); // Очищаем форму $('.post-comments').hide();//скрываем див с формой $('.open-commentform').show();//показываем див с кнопкой вызова формы //$('.all_comments').load("<?echo $url;?> .all_comments > *");//перезагружаем блок с комментариями $('.all_comments').html(result.comment);//добавляем комментарий //$(document).delegate(".all_comments", "click", function() { // $('.all_comments').prepend(response.comment);//добавляем комментарий //}); //$.each(result, function(index, value) { // $('.all_comments').prepend(comment);//добавляем комментарий //}) } else { // Если есть ошибка, выводим ошибку $('.post-comments').hide();//скрываем див с формой $('.open-commentform').show();//показываем див с кнопкой вызова формы $('.info').text(response.error);//выбираем первый элемент массива errors } // Установка таймера для скрытия сообщения через 5 секунд setTimeout(function() { $('.info').text(""); // Очистите текст блока "info" }, 5000); // 5000 миллисекунд = 5 секунд }, error: function(xhr, ajaxOptions, thrownError) { // Обработка ошибки //console.log(xhr.status); //console.log(thrownError); } }); }); }); и если раскомментировать // Обработка ошибки //console.log(xhr.status) //console.log(thrownError), то показывает ошибки в json - SyntaxError: Unexpected token '<', "<article d"... is not valid JSON at parse (<anonymous>). в php это первая строчка шаблона коммента PHP: <article data-id="<?echo htmlspecialchars((int)$row['comment_id']);?>" class="comment">
Добрый день! Попробуйте отравлять в response html-text вместо json. Если Вы хотите дополнять в child-элемент в начало parent-элемента с селектором '.all_comments', то нужно раскоментировать Код (Javascript): // $('.all_comments').prepend(response.comment);//добавляем комментарий В response.comment должен быть такой HTML: HTML: <p> <!-- добавленный комментарий --> </p> или <div> <!-- добавленный комментарий --> </div> см. пример здесь https://api.jquery.com/prepend/ Удачи!