对Ajax不熟悉,所以我试图让我的头部缠绕在东西上。我试图通过将我的Javascript事件处理程序连接到span元素的onclick来进行Ajax调用。我的模板中没有表单元素。是否有可能在Django中没有表单元素的情况下进行Ajax调用?从我的理解是,但我似乎无法让它工作。当我在视图中查看请求时,没有HTTP_X_REQUESTED_WITH标头,因此request.is_ajax()调用始终返回false。在没有表格的情况下在Django中调用Ajax
这里是我的模板的相关部分:
<td><span class="header" onclick="sort_user_table('username')"><a href="">Username</a></span></td>
这是我的JavaScript函数:
function sort_user_table(col_name) {
$.ajax({
url: "/listusers/",
data: {sort_order: col_name},
headers: {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'},
type: "GET",
dataType : "json",
success: function(json) {
alert('json = ' + json);
},
});
}
这是我的观点:
def list_users_page(request):
if request.is_ajax():
sort_order = request.GET['sort_order']
users = User.objects.all().order_by(sort_order)
data = serializers.serialize('json', users)
json_users = json.dumps(data)
return HttpResponse(json_users, mimetype='application/json')
else:
users = User.objects.all().order_by('last_name')
variables = RequestContext(request, {
'users': users,
})
return render_to_response('users_page.html', variables)
感谢您的建议。 'request.is_ajax'块中的'Users'是一个错字,我的代码确实是'User.objects.all'。为了简洁,我省略了错误回调。当我插入并检查错误时,它仅仅是“错误”消息,不是很有帮助。我按照你的建议做了,并检查了请求标题,HTTP_X_REQUESTED_WITH标题不在请求中。 – nucklehedd