Всім привіт. Спіткала така проблема, робив систему лайків для сайту, на окремому проекті все було і працювало безвідмовно. Переніс на реальний сайт, все працює, тільки чомусь не хоче обновляти поля з кількістю лайкнутих.
Ось код з view, який і приймає запит та повертає результат:
▼Прихований текст
def add_ajax(request, id):
if request.is_ajax():
like = Post.objects.get(id=id)
user = UserProfile.objects.get(user_id=request.user.id)
user.like -= 1
user.save(update_fields=['like'])
like.liking.add(user.user)
like.author.like += 1
like.author.save(update_fields=['like'])
like.like += 1
like.save(update_fields=['like'])
response = {'count_like': str(like.like), 'author-like': like.author.like}
return JsonResponse(response)
Ось сам JS код з Ajax:
▼Прихований текст
var url = document.createElement('a');
url.href = document.URL;
$(document).ready(function () {
$("#like_this").click(function() {
$.ajax({
type: 'GET',
async: true,
url: '/ajax'+url.pathname,
success: function(data) {
$("#like").html(data['count-like']);
$("#author-like").html(data['author-like']);
},
dataType: 'json'
});
});
});
І ось місця де має це всьо діло обновлятись:
▼Прихований текст
<span [i]id="author_like"[/i]>[b]{{ post.author.like }}[/b]</span>
</h5>
<div class="author-box-info">
<table class="author-box-info-table">
<tr align="center">
{% if not push_like and not you_post%}
<td>
<span id="like_this" class="glyphicon glyphicon-thumbs-up c222"></span>
<div [i]id="like"[/i]>[b]{{ post.like }}[/b]</div>
</td>
{% else %}
<td>
<span class="glyphicon glyphicon-thumbs-up c777"></span>
<div>{{ post.like }}</div>
</td>
{% endif %}
Ну і рядок з роутера:
▼Прихований текст
url(r'^ajax/post/id(?P<id>\d+)$', views.add_ajax),
Так ось,суть питання, чи можна подивитись якось що повертається і чи взагалі щось повертається з в'юшки після обробки запитів? Бо коли натискаю на лайк - не відбувається нічо, але запити на сервер приходять. І після перезавантаження сторінки лайк зараховується. Пробував в консолі Хрома js-ом заміняти дані в блоках - так без проблем міняє, а тут напевне зворотній запит від сервера не приходить...