自从我使用JQuery / Ajax而不是axios连接到端点以来,我有点做错了吗?
var express = require('express');
var app = express()
var bodyParser = require('body-parser');
var path = require('path');
var port = process.env.PORT || 3000;
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
// Pass to next layer of middleware
next();
});
app.get('/', function(req, res) {
console.log(req.body);
res.sendFile(path.join(__dirname, '../public/src', 'index.html'))
})
app.listen(port, function(error) {
if(error){
console.log(error);
}
console.log('Express is listening on port: ', port);
})

我的客户端代码是:
<html lang="en">
<head>
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
<script>
function buttonClick() {
$.ajax({
url: 'http://localhost:3000',
type: 'POST',
data: {
'See me?': 'YEAH?'
},
dataType: 'json',
success: function(data) {
alert('This is the data: ', data)
},
error: function(error) {
alert('This is an error: ', error)
}
})
}
</script>
</head>
<body>
<h3>Hello world</h3>
<button onclick="buttonClick()"> Click Me! </button>
</body>
</html>
&#13;
每当我点击“click me”按钮时,都会收到错误消息:
POST http://localhost:3000/ 404 (Not Found)
(anonymous) @ VM174:1
send @ jquery-3.2.1.min.js:4
ajax @ jquery-3.2.1.min.js:4
buttonClick @ (index):11
onclick @ (index):33
VM174:1 XHR failed loading: POST "http://localhost:3000/".
&#13;
有谁知道为什么会这样?顺便说一下,当我刷新页面时,我总是在服务器上获得控制台日志。控制台日志应该发生的唯一时间是调用AJAX帖子的时间。似乎每次刷新时都会调用它。
答案 0 :(得分:3)
您在服务器端没有邮件处理程序,只有一个获取处理程序。
将其更改为发布或向服务器添加新的后期终结点。
app.post('/', function(req, res) {
console.log(req.body);
......
})