我做了一个按钮,用Jquery提交了一些POST数据。它只是通过json发送一个“名称”:“ kevin”。
$(document).ready(function() {
$('#clickMe').on('click', function() {
var data = {};
data.name="kevin";
$.ajax({
type: "POST",
data: JSON.stringify(data),
contentType: 'application/json'
});
});
});
我的服务器接受此请求并将输出泵送到console.log
const express = require('express');
const app = express();
var bodyParser = require('body-parser');
var port = 8080;
app.use(express.static('public'));
app.use(bodyParser.json());
app.post('/', (req, res) => {
console.log(req.body.name);
});
app.listen(port);
console.log('Listening on http://localhost:' + port)
我的问题是console.log(req.body.name)输出两件事,而不是一件事……而且我不确定为什么。我的控制台输出如下所示:
Kevin
Undefined
答案 0 :(得分:1)
您显示的代码很好。您需要确保提供HTML部分。
获得此结果的原因之一就是拥有这样的代码:
r=sqrt(dAstX**2 + dAstY**2)
在这里,将提交AJAX请求(使用<form action='/' method="post">
<button id="clickMe" type="submit">submit</button>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('#clickMe').on('click', function() {
var data = {};
data.name = "kevin";
$.ajax({
type: "POST",
data: JSON.stringify(data),
contentType: 'application/json'
});
});
});
</script>
),然后还将提交表单(不使用data.name属性,因此为data.name = "kevin"
值)。
在这种情况下,解决方案是阻止使用undefined
或event.preventDefault();
提交表单:
return false;
您也可以简单地删除表单部分,只需要按钮:$(document).ready(function() {
$('#clickMe').on('click', function(e) {
e.preventDefault();
var data = {};
data.name = "kevin";
$.ajax({
type: "POST",
data: JSON.stringify(data),
contentType: 'application/json'
});
// OR
// return false;
});
});
。这里不会提交表单,因此不需要<button id="clickMe">click here</button>
或event.preventDefault();
。
您还可以通过添加输入并删除JS部分来使用表单,但这只是经典的表单提交。
答案 1 :(得分:0)
您的API正常,请在app.post()上添加一个响应,然后尝试一下。 验证您的DOM(如果有两个事件或类似事件)。