我想使用 ajax 来显示所有对歌曲做出回应的评论。歌曲模型包含用于评论模型的多对多字段。我在使用 django 的序列化程序时遇到了问题,或者我在从我的视图中接收数据时遇到了问题。我不太确定是哪个。
View.py:
def commentview(request):
if request.is_ajax and request.method =="GET":
song_id = request.GET.get("song_id",None)
song = get_object_or_404(Song,pk=song_id)
comments = song.comments.all()
ser_comments = serializers.serialize('json', comments)
return JsonResponse({"instance": ser_comments}, status=200)
播放列表.html:
{% block javascript %}
<script>
function comments( id) {
$.ajax({
type: 'GET',
url: "{% url 'app:commentview' %}",
data: { "song_id": id },
success: function (response) {
var comments = JSON.parse(response["instance"]);
for (var i = 0; i <= comments.length; i++) {
var field = comments[i]["fields"];
$("popup" + id).prepend(
'< h5 > ${ field["member"]|| "" }</h5 >' +
'< p > ${ field["text"]|| "" }</p >' +
'<br>',
)
}
$("popup" + id).prepend(
'<textfield id="comment' + id + '"></textfield>' +
'<button onclick="postComment(' + id + ')">Comment</button>',
)
},
error: function (response) {
}
})
}
</script>
{% endblock javascript %}
我得到的错误代码:
1:520 Uncaught TypeError: Cannot read property 'fields' of undefined
at Object.success (1:520)
at i (jquery-3.2.1.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.2.1.min.js:2)
at A (jquery-3.2.1.min.js:4)
at XMLHttpRequest.<anonymous> (jquery-3.2.1.min.js:4)