我在服务器端获取请求数据时遇到问题。当谈到网络代码索姆熊时,我是新手。这是我的(简化)代码:
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发送时获取数据的正确方法是什么?
答案 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。