为什么这个变量没有在 POST 请求中传递?
Why is this variable not being passed in the POST request?
我正在尝试通过 AJAX 执行一个简单的 POST 请求,但我一直收到 500 个错误。为了弄清楚问题出在哪里,我在每个 if 条件之后添加了打印语句。请看下面我的看法。
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' 有问题。下面是jQueryAJAX.
<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错误还是我的查看方法错误?
您的代码看起来正在寻找具有 class delete_button
的元素的 id
。您的模板是否包含带有 class 的元素?如果有,它的 id
是多少?这是应该作为 entryname
传递的值,但是如果您的模板中没有这样的元素,那么传递 None
的值是有意义的(正如您在评论中提到的那样)。尝试将 delete_button
class 添加到您的 link 标签。
我正在尝试通过 AJAX 执行一个简单的 POST 请求,但我一直收到 500 个错误。为了弄清楚问题出在哪里,我在每个 if 条件之后添加了打印语句。请看下面我的看法。
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' 有问题。下面是jQueryAJAX.
<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错误还是我的查看方法错误?
您的代码看起来正在寻找具有 class delete_button
的元素的 id
。您的模板是否包含带有 class 的元素?如果有,它的 id
是多少?这是应该作为 entryname
传递的值,但是如果您的模板中没有这样的元素,那么传递 None
的值是有意义的(正如您在评论中提到的那样)。尝试将 delete_button
class 添加到您的 link 标签。