我是NodeJS的新手。我有一个登录页面,我正在尝试使用表单验证用户。因此,我正在捕获表单提交,并将ajax请求发送到我的server(app.js)文件。但是,我从服务器取回的内容是404-。我要执行验证,如果用户被验证,则将他带到另一个页面,或者在登录页面本身中打印错误消息。我没有在node-js中做到这一点。还有一个疑问,如何同时处理页面的Ajax请求和HTTP请求。谢谢。
这是我执行验证的客户端Javascript代码:
function checkUserParameters(username, password) {
var jsonObj= '{"username": \"'+username+'\", "password": \"'+password+'\"}'
jsonObj= JSON.parse(jsonObj)
$.ajax({
url: 'http://localhost:3000/login.html',
type: 'post',
data: jsonObj,
success: function (data) {
console.log('Obtained '+data+' data from server')
},
error: function (jqXHR, textStatus, error) {
console.log('Text status : '+textStatus+' Error: '+error)
}
})
}
这是服务器(app.js)代码:
const path= require('path')
const express= require('express')
const mongodb= require('mongodb')
const MongoClient= mongodb.MongoClient
const databaseURL= 'mongodb://127.0.0.1:27017'
const databseName= 'projektx'
const app= express()
const pathDir= path.join(__dirname, '../public')
app.use(express.static(pathDir))
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000')
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)
next()
})
app.post('/login', (req, res) => {
res.sendFile('./login.html')
})
app.listen(3000, () => {
console.log("Server is up on port 3000")
})
答案 0 :(得分:0)
您的AJAX请求的url
与您向Express app.post
到/login
端点的公开路径不匹配。
您需要将AJAX请求更改为/login
而不是/login.html
,或将Express端点更改为/login.html