我的客户端代码如下所示:
<form name="sendCoordinates" action="http://localhost:8080/geodata" method="post">
<label> MinLat: </label>
<input type="text" name="MinLat" value="0"><br>
<label> MaxLat: </label>
<input type="text" name="MaxLat" value="1"><br>
<label> MinLong: </label>
<input type="text" name="MinLong" value="0"><br>
<label> MaxLong: </label>
<input type="text" name="MaxLong" value="1"><br>
<input type="submit" value="submit" id="s1">
</form>
<script>
$("#sendCoordinates")
.on('submit', function(e) {
e.preventDefault();
var $form = $(e.target),
formData = new FormData();
params = $form.serializeArray();
$.each(params, function(i, val) {
formData.append(val.name, val.value);
});
$.ajax({
url: $form.attr('action'),
data: formData,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(result) {
console.log(result + "you");
}
});
});
</script>
我将此表单数据发送到端点/geodata
。
app.post("/geodata", function(req, res) {
console.log(req.body);
});
我的问题是,在一篇成功的帖子中,console.log(req.body)
在服务器端打印的是什么?由于某些错误,我的客户端尚未发送任何信息,因此无法判断。这将帮助我根据我在post请求中收到的数据编写服务器端代码。
答案 0 :(得分:0)
您似乎正在使用Express。在一般实践中,请求主体被解析为JSON(请参阅Express req.body
docs),但这取决于您正在使用的解析中间件(body-parser是Express应用程序中常见的)。
它还取决于请求的Content-Type
标头。从我上面提到的Express文档中,他们举了一个例子:
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
看起来您当前在AJAX请求中设置了contentType: false
,因此只会将原始数据发送到您的服务器。
更具体地回答你的问题
我的问题是,在一篇成功的帖子下,console.log(req.body)会在服务器端打印出什么内容?
这取决于Content-Type
以及使用解析请求正文的中间件(如果有)。