我的项目有一个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更新为纯文本?
图片:
添加了新帖子,但未添加纯文本
刷新后,它将显示为纯文本,
答案 0 :(得分:2)
您应该使用.text(data.title)
而不是.html(data.title)
。有关其他question的更多信息。
答案 1 :(得分:2)
您应该在此行使用.text而不是.html
$('#post_title_content').html(data.title);
jQuery.html()将字符串视为HTML,而jQuery.text()将内容视为文本