我正在使用Google App Engine,Jquery和Django.我希望在提交表单时将POST数据发送到服务器端,我使用以下代码在JQuery中执行此操作:
$("#listform").submit(function() {
$.ajax({
type: "POST",url: "/xhrtest",data: {'name': 'herman'},success: function(data){
console.log(data)
}
});
})
在我的Django视图中:
def xhrtest(request):
if request.method == "POST":
return HttpResponse("Post data!")
else:
return HttpResponse("GET request.")
我本来希望收到“发布数据!”的回复,但不知何故回复总是“GET请求”.这也不是unicode问题,因为可以打印request.method并查看“GET”.
在Firebug中评估这个时,我看到两个请求通过:首先是POST请求,它接收回复“GET请求”.然后是GET请求,它接收回复“获取请求”.同样.在Google App Engine开发控制台中,我还可以看到两个请求. POST请求满足301响应,GET满足200.
这是什么意思,我需要做什么才能接收POST数据?
最佳答案
几乎可以肯定的是,您正在请求url / xhrtest,而没有最终的斜杠.默认情况下,Django会将该请求重定向到带有最终斜杠的/ xhrtest / – 并且该重定向将是GET,而不是POST.
有关详细信息,请参阅配置此行为的APPEND_SLASH
设置和使用它的CommonMiddleware
模块.