收到时AJAX请求为空

时间:2013-08-05 12:23:07

标签: python ajax post flask

我可能在这里做些傻事,但出于某种原因,对我来说似乎是一个完全有效的ajax请求是行不通的。

这是AJAX请求:

data = {emotions: lRes};
console.log(data); //Data seems to be exactly what I'm looking for
$.ajax({
    type: "POST",
    data: data,
    url: document.location.origin + "/facedata/" + slug,
    success: function(){
        console.log("Success!");
    }
});

但接着是AJAX请求的接收端:

@app.route('/facedata/<slug>', methods=["POST"])
def facedata(slug):
    if request.method == "POST":
        try:
            post = Post.objects.get_or_404(slug=slug)
            print request.args
            sys.stdout.flush()
            data = request.args.get("emotions")
            post.face_data.append(data)
            post.save()
        except:
            traceback.print_exc(file=sys.stdout)

当我记录args时,我只得到一个空的ImmutableMultiDict对象,所以情绪调用仍然失败。有人知道这到底发生了什么吗?

1 个答案:

答案 0 :(得分:1)

request.args是URL中提供的参数。 Flask的request对象包含一个包含POSTed数据的.form属性 - 因此您必须使用request.form来访问通过AJAX请求发送的数据,例如:

@app.route('/facedata/<slug>', methods=["POST"])
def facedata(slug):
    emotions = request.form.get('emotions')