За последние 24 часа нас посетили 16742 программиста и 1603 робота. Сейчас ищут 1285 программистов ...

Перевод строк. Вставка div-а

Тема в разделе "JavaScript и AJAX", создана пользователем виталий032, 30 ноя 2017.

  1. виталий032

    виталий032 Активный пользователь

    С нами с:
    31 янв 2014
    Сообщения:
    227
    Симпатии:
    30
    Адрес:
    Владивосток
    Всем привет.
    При успешной вставке поста в бд, на страницу вставляется пост:

    Код (Javascript):
    1. $('.add_new_post').after(function() {
    2.     return '<div class="post" id="4"> \
    3.                <div class="post_head"> \
    4.                    <img src="" class="author_img" alt=""> \
    5.                        \
    6.                    <div class="post_info"> \
    7.                        <h5><a href="#" class="author"></a></h5> \
    8.                        <span class="when"></span> \
    9.                    </div> \
    10.                            \
    11.                    <div class="option"> \
    12.                        <i class="fa fa-ellipsis-h" aria-hidden="true"></i> \
    13.                    </div> \
    14.                </div> \
    15.            </div>';
    16. });
    Методом, "помню что обратный слэш экранирует" подставил слэши в конце каждой строки и всё начало работать.

    У меня возник вопрос. Это не все div-ы, еще строк 15, и на каждой ставить слэш времязатратно. Есть ли более изящный способ?
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.798
    Симпатии:
    1.331
    Адрес:
    Лень
    обычно данные заносят в бд, после экранируя от хтмл верстки, вставляют в шаблон веб интерфейса. Ибо после 10 раза прочтения вашего поста, так и не вкурил смысл покорения человечества.
     
  3. виталий032

    виталий032 Активный пользователь

    С нами с:
    31 янв 2014
    Сообщения:
    227
    Симпатии:
    30
    Адрес:
    Владивосток
    Хочу переложить ответственность по генерации разметки нового поста на js.
    При нажатии на "добавить пост" посылается Ajax запрос, на сервере вставляется запись в бд и возвращается в клиент массив с данными нового поста. На клиенте формируется разметка, заполняется данными из массива и на странице появляется новый пост.
     
  4. karmay

    karmay Активный пользователь

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    Ну так надо и писать, так как и говорите. На странице сформировать разметку, но выводить ее при условии, что вернулся с сервера массив, и в нем есть данные, и выводить их.
     
  5. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @виталий032, во-первых, подобная разбивка необходима лишь для "читабельности", следовательно, можно и не жать лишний раз Enter, хотя, конечно, разбивка и отступы - правильно... но для этого есть методы (или 'some string' + Enter 'string' + Enter 'some string', или см.п3);
    во-вторых, js вполне может "перевод строки" (обычный \n, добавляемый текстовым редактором) воспринять как точку с запятой (для предотвращения этого и используется в данном контексте символ '\');
    в-третьих, формировать DOM-элемент html разметки можно предназначенными для этого методами.
     
    виталий032 нравится это.