使用Jquery,Django和Google App Engine时,jQuery AJAX请求被调用两次

Her*_*aaf 5 django ajax jquery google-app-engine

我正在使用Google App Engine,Jquery和Django.我希望在提交表单时将POST数据发送到服务器端,我使用以下代码在JQuery中执行此操作:

    $("#listform").submit(function() {
            $.ajax({
                    type: "POST",
                    url: "/xhrtest",
                    data: {'name': 'herman'},
                    success: function(data){
                            console.log(data)
                    }
            });
    })
Run Code Online (Sandbox Code Playgroud)

在我的Django视图中:

def xhrtest(request):
        if request.method == "POST":
                return HttpResponse("Post data!")
        else:
                return HttpResponse("GET request.")
Run Code Online (Sandbox Code Playgroud)

我本来希望收到"发布数据!"的回复,但不知何故回复总是"GET请求".这也不是unicode问题,因为可以打印request.method并查看"GET".

在Firebug中评估这个时,我看到两个请求通过:首先是POST请求,它接收回复"GET请求".然后是GET请求,它接收回复"获取请求".同样.在Google App Engine开发控制台中,我还可以看到两个请求.POST请求满足301响应,GET满足200.

这是什么意思,我需要做什么才能接收POST数据?

Dan*_*man 11

几乎可以肯定的是,您正在请求网址/xhrtest,而没有最终的斜线.默认情况下,Django会将该请求重定向到/xhrtest/- 使用最终斜杠 - 并且重定向将是GET,而不是POST.

有关详细信息,请参阅APPEND_SLASH配置此行为的设置和CommonMiddleware使用它的模块.