首页 > 解决方案 > 将数据从 jquery 成功填充到模态时出现问题

问题描述

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

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

模型对象中的数据:

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

数据作为列表传递给 jquery:

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

在 Modal 中可见的数据:

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);
    }
  });
});

视图.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)

标签: pythonjquerydjango

解决方案


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

您在 HTML 中作为网站的输出?好吧,“\n”不被认为是“break”,而是<br/>.

您的 html 文件在技术上如下所示:

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

你不想把每一个都\n算作<br/>.

你有两个选择:

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

推荐阅读