从jquery成功向模式填充数据时出现问题

时间:2019-05-03 08:15:25

标签: python jquery django

我有一个函数,该函数使用AJAX请求从视图中获取数据并以模型中列表的形式返回数据。

在我的模型中,数据以换行符输入,但是在我的jQuery输出中,\n字符被忽略。有人可以帮忙吗?

模型对象中的数据:

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 :(得分:0)

首先,您对“ jquery”输出是什么意思?

您在HTML网站中的输出?好吧,“ \ n”不是那里的“破折号”,而是<br/>

您的html文件在技术上看起来像这样:

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

您不想将每个\n都计为<br/>

您有两个选择:

将结果打印在支持\n的html元素中(例如<pre>, <code> and <textarea>做,或将\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/>');