【发布时间】:2013-12-09 11:54:56
【问题描述】:
我对 jQuery 非常陌生,并试图制作一个简单的应用程序,允许人们使用 Ajax 调用来喜欢照片。以下是相关部分:
照片.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 和 like.js,但是根据 Firebug 的 XHR,单击 like 按钮没有任何效果。
应用程序在没有 AJAX 调用的情况下运行良好,也就是说,当我在模板中使用简单的锚点时:
<p><a href="/photo/like/{{pic.id}}">Like</a></p>
【问题讨论】:
-
刚刚发现一个错误,
"'/photo/like/'+ post_id"不正确,你要"/photo/like/" + post_id。请注意,它并非全部被引号包围 -
@Eru 这几乎可以肯定是问题所在,您应该将其发布为答案。
-
@DanielRoseman 显然这不是唯一的问题。根据 Firebug,该按钮仍然不发送发布请求。
标签: javascript jquery ajax django button