发布到Bottle服务器。我如何获取请求数据?

时间:2013-05-06 08:54:42

标签: jquery python bottle

我在服务器端获取请求数据时遇到问题。当谈到网络代码索姆熊时,我是新手。这是我的(简化)代码:

HTML

<form id="form" action="http://localhost:8080/report" enctype="multipart/form-data" method="POST">
    <div name="navigation-bar" id="navigation-bar">
        <input type="submit" value="Post" onclick="post()" />
    </div>
 </form>

JS

function post() {
    $.post("http://localhost:8080/report",
            {"id": 1},
            function(data) {
                alert(data);
            },
            "json");
}

吡啶

@route('/report', method='POST')
def report():
    payload = request.json
    return payload

有效负载始终为None。使用jQuery发送时获取数据的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

将数据类型设置为"json"只会告诉jquery如何插入响应,它不会更改请求的格式,仍然会发送application/x-www-form-urlencoded。< / p>

bottle的{​​{3}}仅在使用正确的application/json内容类型发送请求时才有效,因此如果您要使用该内容,则需要手动设置内容请求的类型,并将请求数据编码为json:

function post() {
    $.ajax({
        url: "/report",
        type: "POST",
        data: JSON.stringify({"id": 1}),
        contentType: "application/json",
        dataType: "json",
        success: function(data) {
            alert(data);
        }
    });
}

然而,这仅适用于使用javascript提交,正常的表单提交将不起作用,这意味着您应该将提交按钮更改为普通按钮或确保您的oncklick返回false。