Проблема при заполнении данных от успеха jquery до модального - PullRequest
1 голос
/ 03 мая 2019

У меня есть функция, которая использует AJAX-запрос для извлечения данных из представления и возвращает данные в виде списка, который находится в модели.

В моей модели данные вводятся с символом новой строки, однако в моем выводе jQuery символ \n игнорируется.Кто-нибудь может помочь?

Данные в объекте Model:

ankit: Hi govind!
go358938: Hi Ankit, how are you  ?

Данные, переданные в виде списка в jquery:

{ 'list': 'ankit: Hi govind!\r\ngo358938: Hi Ankit, how are you  ?' }

Данные, видимые в модальном режиме:

ankit: Hi govind! go358938: Hi Ankit, how are you ?
$('#chatbox').on('show.bs.modal', function (event) {
  var button = $(event.relatedTarget) 
  var recipient = button.data('whatever') 
  $.ajax({
    url: "{% url 'fetcher' %}",
    data: {
      'search': recipient
    },
    dataType: 'json',
    success: function (data) {
      list = data.list;
      $('#chatbox').find('.modal-body').html(list);
    }
  });
});

Views.py

def fetcher(request):
if request.is_ajax():
  name = User.objects.get(username=request.GET.get('search', None))
  b = ChatMessage.objects.get(user2 = name)
  print(b.message)
  data = {
    'list': b.message,
  }
  return JsonResponse(data)

1 Ответ

0 голосов
/ 03 мая 2019

Во-первых, что вы имеете в виду с выходом "jquery"?

Ваш вывод в HTML как веб-сайт? Ну, "\ n" там не считается "перерывом", но <br/>.

Ваш HTML-файл технически выглядит так:

<div>\n
  <p>Whatever</p>\n
  <p>Something different</p>\n
</div>

Вы не хотите считать каждый \n как <br/>.

У вас есть два варианта:

Распечатайте результаты внутри html-элемента, который поддерживает \n (например, <pre>, <code> and <textarea> do), или замените \n на <br/>).

Решение 1:

<textarea class="modal-body-content">
This is a new line\nhere
</textarea>

$('#chatbox').find('.modal-body-content').html(list);

Решение 2:

$('#chatbox').find('.modal-body').html(list.replace(/\n/g, '<br/>');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...