Django-我使用ajax创建帖子后,将div更新为纯文本

时间:2019-02-19 09:18:28

标签: ajax django django-views

我的项目有一个Post模型。我的主页上有所有post和post_create表单的列表。我使用ajax视图创建帖子。目的是创建一个新帖子并在不刷新页面的情况下更新主页。这是代码, views.py,

 def post_create_ajax(request):
   if request.is_ajax():
      if request.method == 'POST':
        title = request.POST.get('the_post')
        author = request.user
        post = Post(title=title, author=author)
        print(title)
        post.save()
        return JsonResponse({'title': title})

脚本

$('#postform').submit(function(event){
   event.preventDefault();
   console.log('Working');
   create_post();
});

function create_post(){
   console.log('Create Post is working');
   var posttitle = $('#id_title').val();
   $.ajax({
      url: '/ajaxcreate/',
      type: "POST",
      data: {
          the_post: posttitle,
          csrfmiddlewaretoken: '{{ csrf_token }}',
      },
      dataType: 'json',
      success: function(data){
          $('#id_title').val('');
          console.log(data.title);
          $('#post_title_content').html(data.title);
       },
       error:function(){
          console.log('Error Occoured');
          alert('Error');
       },
   })
}

这部分工作正常。新帖子页面的添加没有刷新。

这是个问题。我提交帖子后,添加的新标题并不安全。

例如如果我添加<b> This is a title </b>,则新的div将添加这是标题,并且在刷新页面后仅返回纯文本<b> This is a title </b>

所以我的问题是如何更改脚本,以便它将div更新为纯文本?

图片:

添加了新帖子,但未添加纯文本

Here

刷新后,它将显示为纯文本,

The text is added but not in plain text

2 个答案:

答案 0 :(得分:2)

您应该使用.text(data.title)而不是.html(data.title)。有关其他question的更多信息。

答案 1 :(得分:2)

您应该在此行使用.text而不是.html

$('#post_title_content').html(data.title);

jQuery.html()将字符串视为HTML,而jQuery.text()将内容视为文本