我试图通过AJAX做一个简单的POST请求,但我一直遇到500个错误。为了找出问题所在,我在每个if条件之后都添加了print语句。请参阅下面的视图。
if request.is_ajax():
print "request is ajax"
object_name = request.POST.get('entryname')
print object_name
targetobject = Entry.objects.get(headline=object_name)
if request.user.username == targetobject.author:
print "current user is author"
targetobject.delete()
return HttpResponseRedirect('/storefront/')
打印到控制台的唯一内容(500错误除外)是“request is ajax”和“None”。这告诉我'object_name'或'entryname'出了问题。下面是jQuery AJAX。
<script type="text/javascript">
var my_app = {
username: "{{ request.user.username }}"
};
</script>
<script>
$(document).ready(function() {
$(".delete_button").click(function() {
var entryname = $(this).attr('id');
$.ajax({
type: "POST",
url: "/accounts/" + my_app.username + "/listview/",
data: {'entryname': entryname},
csrfmiddlewaretoken: '{{ csrf_token }}'
});
return false;
});
});
</script>
<a href="" class="delete_button" id="{{ i.headline }}">del</a>
并且,控制台中出现此错误
DoesNotExist: Entry matching query does not exist.
我哪里出错了?是jQuery或我的视图方法中的错误吗?
答案 0 :(得分:1)
您的代码看起来正在寻找具有类id
的元素的delete_button
。您的模板是否包含该类的元素?如果是这样,它的id
是什么?这是应该作为entryname
传递的值,但是如果模板中没有这样的元素,那么传递None
的值是有意义的(正如您在评论中提到的那样)。尝试将delete_button
类添加到您的链接标记。