0

我可能在这里做一些愚蠢的事情,但由于某种原因,对我来说似乎是一个完全有效的 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对象,所以情绪调用仍然失败。有人知道这里到底发生了什么吗?

4

1 回答 1

1

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

@app.route('/facedata/<slug>', methods=["POST"])
def facedata(slug):
    emotions = request.form.get('emotions')
于 2013-08-05T12:31:26.077 回答