在这种情况下当js将外键名称放入p标签时,它显示未定义但它以正确用户的身份获得输入但无法显示,因为它显示未定义
<<p>js代码/strong>$(document).ready(function(){
// $('#submit').onclick(function(){
// $('#message').val=''
// })
$(document).on('submit','#post_form',function(e){
e.preventDefault();
$.ajax({
type: 'POST',
url:"{% url 'create' %}",
data:{
message: $('#message').val(),
csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val(),
},
success:function(){
window.location = url;
}
});
});
setInterval(function()
{
$.ajax({
type:'GET',
url:"{% url 'comments' %}",
success:function(response){
$('.display').empty();
for(var key in response.comments){
这里显示未定义,是否有办法将其转换为字符串console.log (response.comments(例子).user);
var temp = "<div class='message_area'><p id='messagetext'>"+response.comments[key].message+"</p></div>"
$(".display").append(temp);
}
},
error:function(response){
console.log("no data found")
}
});
}, 500);
});
views.py
def create(request):
if request.method == "POST":
author = request.user
message = request.POST['message']
message = comments(user=author,message=message)
message.save()
class comments(models.Model):
userId = models.AutoField(primary_key=True)
user = models.ForeignKey(User,on_delete=models.CASCADE)
message = models.CharField(max_length=100,blank=False)
date = models.TimeField(auto_now_add=True)
def __str__(self):
return f'{self.user} comments'
在js代码中使用Django模板语法并没有错,但如果我们不这样做可能会更好。而不是data:{ message: $('#message').val(); csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val(),},
它可以写在html中,在表单部分中。js可以是:
<form id="form_id" ......>
{% csrf_token %}
<!-- other fields of the form -->
</form>
$.ajax({
type: 'POST',
url:"{% url 'create' %}",
data:$("#form_id").serialize();
success:function(){
window.location = url;
}
});
好吧,这对你的情况还不够,你在代码的另一部分有问题。你没有提供返回评论的视图函数,似乎问题就在那里,这时你可以使用console.log(response.comments[key]);
来找出返回的数据,然后使用信息来纠正代码