За последние 24 часа нас посетили 18589 программистов и 1626 роботов. Сейчас ищут 1333 программиста ...

Как добавить новый блок в ответе ajax?

Тема в разделе "JavaScript и AJAX", создана пользователем гендаль серый, 28 янв 2024.

  1. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    запрос такой
    Код (Javascript):
    1. $(document).ready(function() {
    2.   $('.input_post').submit(function(e) {
    3.     e.preventDefault(); // Prevent form submission
    4.  
    5.     var formData = new FormData(this); // Create a FormData object
    6.  
    7.     $.ajax({
    8.       url: 'обработчик формы', // Replace with your server-side script URL
    9.       type: 'POST',
    10.       data: formData,
    11.       processData: false,
    12.       contentType: false,
    13.       success: function(response) {
    14.         // Insert the response data at the top of the data block
    15.         $('.articles').append(response);
    16.      
    17.       },
    18.       error: function(xhr, status, error) {
    19.         console.log(error); // Log any errors to the console
    20.       }
    21.     });
    22.   });
    23. });
    php обработчик берет шаблон и подставляет в него данные
    PHP:
    1. foreach ($res as $row){  
    2.             $html = require __DIR__.'/../tpl/article.php';
    3.         }



    по итогу данные в виде шаблона тот что article добавляются в контейнер articles, но либо в конец или середину как попало в общем либо как то фоном и отображаются только после ручной перезагрузки страницы. в общем ребята поясните как правильно делать надо.
    --- Добавлено ---
    смысл задачи - отображение новых постов на главной странице (названий постов).
    я уже думал может вообще добавлять не надо новый блок, а просто перезагружать блок с постами, тогда там автоматом на php все само добавляется ..у меня логика сделана все работает...не знаю в общем
     
  2. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    914
    Симпатии:
    143
    Мало инфы, попробуй задать вопрос самому себе, не обладая данными о respose и куда его докидываешь.
     
  3. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    а как по синтаксису что там прописать надо?
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    с сервера возвращаешь JSON данные.
    На клиенской части эти данные разбираешь и делаешь по ним хтмл блоки и вставляешь.
    Нафиг с сервера просить шаблоны
     
  5. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    425
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Добавьте, пожалуйста, console.log
    Код (Javascript):
    1. success: function(response) {
    2.         // Insert the response data at the top of the data block
    3.         console.log(response);
    4.         $('.articles').append(response);
    и покажите, что там.
    В обрабочике по шаблону или как-то иначе должен быть сгенерирован HTML.
    Хотелось бы увидеть конец кода, начиная с
    PHP:
    1. header('Content-type: text/html; charset=utf-8');
     
  6. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    в обработчике формы вставляются данные в базу...так вот задача сразу вытащить из базы название поста, id юзера и вставить в article, а его уже на главную страницу.

    но я думаю сейчас как человек выше сказал json использовать..похоже проще все это будет.
    я просто не понял как блок вставить в контейнер и как там пишется в reponse все это...
     
  7. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    425
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Если использовать json, то Вам придётся из объекта полученного из json_parse в JS cоздавать HTML.
    В этом случае не забудьте добать в ajax dataType: "json", и в обработчике
    PHP:
    1. header('Content-Type: application/json; charset=utf-8');
    Однако, проще будет использовать, как сейчас, Respose Type по умолчанию т.е. text/html и отправить его из PHP.
     
  8. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    спасибо, я там пересмотрел логику отработки формы немного.