Я новичок в веб-разработке. Я пытаюсь создать веб-сайт, на котором есть модуль комментариев, где пользователь может лайкать комментарий и обновлять общее количество голосов, используя ajax. Но почему-то функция ajax error не вызывается даже при ошибке. только функция успеха вызывается несмотря ни на что. Я не знаю, как заставить его работать
вот ajax код:
function upvotecomment(postid, commentid, votes_total){
$('#upvotingcmt').one('submit', function(event){
event.preventDefault();
console.log(event)
console.log("form submitted!") // sanity check
upvotingcomment(postid, commentid, votes_total);
});
}
function upvotingcomment(postid, commentid, votes_total) {
$.ajax({
url : "upvotecomment/"+postid+"/"+commentid, // the endpoint
type : "POST", // http method
// handle a successful response
success : function(json) {
votes_total += 1;
console.log(json); // log the returned json to the console
$('#totalupvotes').text(votes_total);
console.log("success"); // another sanity check
},
// handle a non-successful response
error : function(xhr,errmsg,err) {
console.log('error');
console.log(xhr.status + ": " + xhr.responseText); // provide a bit more info about the
error to the console
}
});
};
вот Django функция просмотра:
@login_required(login_url="/accounts/signup")
def upvotecomment(request, post_id, comment_id):
if request.method == 'POST':
post = get_object_or_404(Post, pk = post_id)
comment = get_object_or_404(Comment, pk = comment_id)
response_data = {}
if comment.user.username == request.user.username:
messages.error(request, "Commenter can't upvote their own comment !")
return redirect('creators')
else:
try:
vote = Commentvote.objects.get(commentID=comment, postID=post, userID=request.user)
messages.error(request, 'You have already voted for this comment!')
return redirect('creators')
except Commentvote.DoesNotExist:
vote = None
# find product by id and increment
post = Post.objects.get(id=post_id)
# find comment by id and increment
comment = Comment.objects.get(id=comment_id)
vote = Commentvote(commentID=comment, postID=post, userID=request.user)
comment.votes_total += 1
vote.save()
comment.save()
response_data['result'] = 'upvoted successfully!'
return HttpResponse(
json.dumps(response_data),
content_type="application/json"
)
else:
return HttpResponse(
json.dumps({"nothing to see": "this isn't happening"}),
content_type="application/json"
)
I Я использую функцию ajax для обработки токена csrf, которая работает нормально.