1

我无法在服务器端获取请求数据。当谈到网络代码时,我是一个新手,请耐心等待。这是我的(简化的)代码:

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");
}

py

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

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

4

1 回答 1

4

将数据类型设置为"json"仅告诉 jquery 如何解释响应,它不会改变请求的格式,仍然发送application/x-www-form-urlencoded

但是json 处理只有在使用正确的内容类型发送请求时才有效bottle,所以如果你想使用它,你需要手动设置请求的内容类型并将请求数据编码为 json:application/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。

于 2013-05-06T10:17:43.587 回答