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

我正在使用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模块.

相关文章

1.第一步 设置响应头 header('Access-Control-Allow...
$.inArray()方法介绍 $.inArray()函数用于在数组中搜索指定的...
jquery.serializejson.min.js的妙用 关于这个jquery.seriali...
JS 将form表单数据快速转化为object对象(json对象) jaymou...
jQuery插件之jquery.spinner数字智能增减插件 参考地址:http...