1

我一直在使用该$.getJSON命令一段时间。但由于我实际上是在发布到服务器,所以我需要使用 $.post。但是一旦我从 切换$.getJSON$.post,后端,即 Flask Python 框架,似乎没有收到任何 JSON 数据。这是我唯一改变的。$.post的文档似乎表明使用任一命令发送数据的格式相同。

使用$.getJSON,我可以使用 request.args.get 命令访问 Flask 中的 JSON 参数。但是改成$​​.post之后,request.args是空的(所以request.args.get()总是返回None)。这是带有以下内容的javascript行$.getJSON

$.getJSON("/admin/emails/ajax/send", {'data':JSON.stringify(data)}, function(){...})

然后想象一下那条线$.post(...)

编辑看来问题是当我从“GET”更改为“POST”时,数据从 Flask 的request.args对象中消失了。我尝试使用该$.ajax方法并获得相同的结果。有人知道为什么吗?

4

4 回答 4

2

只需解开这个野兽并使用 $.ajax 这样你就不会被包装器绊倒。

$.ajax({
    type: 'POST',
    url: '/admin/emails/ajax/send',
    data: JSON.stringify(data),
    dataType: 'json',
    success: function(json){
        //the JSON response from the server
    }
});
于 2013-01-31T07:11:45.427 回答
1

好的,我想通了。如果您以“GET”方法将 JSON 数据发送到服务器,Flask 会将 JSON 数据放入request.args. 相反,如果您使用 'POST' 方法发送数据,Flask 会将数据放入request.form. 有点混乱,但无论如何。

于 2013-01-31T18:33:24.683 回答
0

上面的答案是正确的,但是如果想使用 $.post 你应该去服务器端并添加一个标题:“Content-type: app/json”(类似这样的 google it)

于 2013-01-31T07:14:31.570 回答
0

您是否尝试过$.post这种方式:

$.post("/admin/emails/ajax/send", {'data':JSON.stringify(data)}, function(data){
   console.log(data);
}, "json");
//-^^^^^^-----------are you putting dataType here.
于 2013-01-31T07:21:26.527 回答