Я очень новичок в jQuery и пытаюсь создать простое приложение, которое позволяет людям любить фотографии с помощью вызова Ajax. Вот соответствующие части:Django jQuery кнопка не работает
photo.html:
{% if pic %}
<img class="pic" src="/static/assets/{{pic}}" />
<br />
{% csrf_token %}
<input type="button" id="like" name="like" value="Like" />
<p id="likes"> </p> people liked this
{% endif %}
views.py
def like_photo(request, pic_id):
if request.method == 'POST':
if pic_id:
uid = request.user.id
p=UserPic.objects.get(id=pic_id)
if Liker.objects.filter(user=uid, pic=pic_id):
p.likes -=1
p.save()
Liker.objects.filter(user= uid, pic=pic_id).delete()
else:
p.likes +=1
p.save()
newliker = Liker(user= uid, pic=pic_id)
newliker.save()
args = {}
args.update(csrf(request))
args['likes']= p.likes
return render_to_response('photo.html', args)
like.js
$(function(){
$('#like').click(function() {
var $this = $(this);
var post_id = this.id;
$.ajax({
type: "POST",
url: "'/photo/like/'+ post_id",
data: {
'csrfmiddlewaretoken' : $("input[name=csrfmiddlewaretoken]").val()
},
success: likeSuccess,
dataType: 'html'
});
});
});
function likeSuccess(data, textStatus, jqXHR)
{
$('#likes').html(data);
}
я могу увидеть в Firebug, что JQuery и т.п. .js загружаются на страницу, но нажатие подобной кнопки не влияет на XHR Firebug.
приложение отлично работает без Ajax вызова, то есть, когда я использую простой якорь в шаблоне:
<p><a href="/photo/like/{{pic.id}}">Like</a></p>
я застрял на этом в течение нескольких дней, так действительно ценит вашу помощь.
только что заметил ошибку, '' '/ photo/like /' + post_id "' неверно, вы хотите ''/photo/like/"+ post_id'. обратите внимание, что это не все окружено кавычками – roo2
@Eru, что почти наверняка проблема, вы должны опубликовать ее в качестве ответа. –
@ DanielRoseman, по-видимому, это была не единственная проблема. кнопка по-прежнему не отправляет почтовые запросы, согласно Firebug. – hbp