【发布时间】:2011-04-11 03:52:45
【问题描述】:
我正在使用 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 请求,它接收到“Get request”的回复。也是。在 Google App Engine 开发控制台中,我还可以看到两个请求正在通过。 POST 请求得到 301 响应,GET 得到 200。
这是什么意思,我必须做什么才能接收 POST 数据?
【问题讨论】:
-
request.method(在您的 django 代码中)是否正确?如果是“post”,则不等于“POST”。
-
某些服务器配置正在重定向您的 POST 请求,看起来像。 (w3.org/Protocols/rfc2616/rfc2616-sec10.html)
标签: jquery ajax django google-app-engine