将Ajax帖子提交到我的快速/signup/
路线时,我收到POST http://localhost:3004/signup/ 404。任何帮助将不胜感激。我是Node的新手!
server.js
const pg = require('pg')
const bodyParser = require('body-parser')
const knex = require('./knex')
const express =require('express')
var path = require('path');
const router = express.Router()
const port = process.env.PORT || 3004
const app = express()
app.use(express.static(path.join(__dirname, 'public')));
router.get('/', (req, res, next) => {
res.status(200).send('working')
})
router.get('/user', (req, res, next) => {
knex('user').then(data=>{
res.status(200).send(data)
})
})
router.post('/signup/', (req, res, next) => {
knex('user').insert({
name:req.body.name,
lastName:req.body.nameLast,
email:req.body.email,
password:req.body.password
},'*')
.then(user=>{
res.status(204).send({id:user[0].id})
})
})
app.use((err, req, res, next) => {
const status = err.status || 404
res.status(status).json({ error: err })
})
app.use((req, res, next) => {
res.status(404).json({ error: { status: 404, message: 'Not found'
}})
})
const listener = () => `Listening on port ${port}!`
app.listen(port, listener)
signup.js
$( document ).ready(function() {
const baseURL = 'http://localhost:3004'
$( "#submit" ).on( "click", function() {
event.preventDefault();
const name = $( "#name" ).val();
const last = $( "#nameLast" ).val()
const email = $( "#email" ).val()
const password = $( "#password" ).val()
$.ajax({
url: `/signup/`,
type: 'POST',
data: {
name: name,
last: last,
email: email,
password: password
},
success: function (data) {
window.location.href = '/index.html'
}
})
})
});
最佳答案
您必须向注册路由器
app.use('/', router);
您可以在上方添加它
app.use((err, req, res, next) => {
const status = err.status || 404
res.status(status).json({ error: err })
})
例如。官方documentation(上一节)对此进行了说明。
为了能够阅读
req.body
,您必须启用body-parser中间件。加app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
就在下面
app.use(express.static(path.join(__dirname, 'public')));
确保在定义路线之前添加行。当您添加这两行时,body-parser会解析JSON和x-www-form-urlencoded内容。您正在ajax请求中发送x-www-form-urlencoded。
关于jquery - 快速路由注册Ajax返回POST http://localhost:3004/signup/404,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47849723/