Javascript 为什么我得到两个输出,其中一个未定义?
我制作了一个按钮,用Jquery提交一些POST数据。它只是通过json发送一个“名称”:“kevin”Javascript 为什么我得到两个输出,其中一个未定义?,javascript,jquery,node.js,express,Javascript,Jquery,Node.js,Express,我制作了一个按钮,用Jquery提交一些POST数据。它只是通过json发送一个“名称”:“kevin” $(document).ready(function() { $('#clickMe').on('click', function() { var data = {}; data.name="kevin"; $.ajax({ type: "POST", data: JSON.stringi
$(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
您的API正常,请在app.post()上放置响应并重试。
如果有两个事件或类似事件,请验证您的DOM。显示的代码很好。您需要提供HTML部分来确保 产生此结果的原因之一是产生了此类代码:
<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>
您也可以简单地删除表单部分,只需按下按钮:单击此处
。此处不提交表单,因此不需要event.preventDefault()
或返回false代码>
您也可以通过添加输入和删除JS部分来使用表单,但这只是一个典型的表单提交。IMO,POST api已经两次受到攻击。您的表单也将被提交?我认为您需要在$('#clickMe')之后执行警报(“测试”)
。在('click',function(){
上,查看它是否触发一次或两次。还可以尝试添加stopPropagation();
和preventDefault()
到您的活动,看看它会起什么作用。从“我的”按钮中删除POST和submit成功了。感谢您建议这是一个双重POST!!如果您只是从表单中删除method='POST'
,并从按钮中删除type='submit'
,这不是一个非常优雅的解决方案。您的AJAX将被提交,但您的表单仍将被删除你应该阅读我的答案。
$(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;
});
});