发布到Bottle服务器。我如何获取请求数据?
问题描述:
我无法在服务器端获取请求数据。当我提到网络代码时,我是一个新手。这是我(简化)代码:发布到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");
}
PY
@route('/report', method='POST')
def report():
payload = request.json
return payload
有效载荷总是没有。使用jQuery发送数据时获取数据的正确方法是什么?
答
设置数据类型为"json"
只告诉jQuery的如何interptet的响应,它doesnt't变更请求的格式,这仍然是发送application/x-www-form-urlencoded
。
但bottle
的json handling只能请求是否使用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。
警报窗口中的数据看起来不错?如果是这样,那么你必须仔细研究请求中的商店。我不确定它会是request.json – pypat 2013-05-06 10:17:33
它从来没有达到回调。 – MdaG 2013-05-06 14:02:16