node.js - Node.js 使用 XMLHttpRequest POST 404 错误
问题描述
我遇到 Node.js POST 方法错误 404 错误。细节:
系统平台:Windows 7 Ultimate 中控:XAMPP V3.2.4 Apache:PHP5.2 Node.js:node-v11.0.0-x64.msi 节点模块镜像:节点模块目录
文件: app.js
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var oracledb = require('oracledb');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use(function(err, req, res, next) {
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
res.status(err.status || 500);
res.render('error');
});
app.listen(3000,function(){
console.log('listening port 3000');
});
module.exports = app;
登录.js
<!DOCTYPE html>
<html lang="zh-cn" class="login">
<head>
<meta charset="UTF-8">
<title>Node Blog</title>
<meta name="keywords" content="Node,Node.js">
<link rel="stylesheet" href="/css/normalize.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
</head>
<body>
<section>
<form action="/login" method="POST">
<div class="form-group">
<input type="text" name="name" placeholder="登录名" onBlur="getData()">
<script type="text/javascript">
var url = 'http://localhost:3000/login';
function getData() {
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
document.write('readyState:');//4 sentences for testing execute result as below:
document.write(this.readyState);
document.write('status:');
document.write(this.status);
if (this.readyState == 4 && this.status == 200) {
document.write('readyState and status are OK');
}
};
xhr.open('POST',url,false);
xhr.send("username=[user]&password=[password]");
}
</script>
<%if(message){%>
<p><%=message%></p>
<%}%>
</div>
<div class="form-group">
<input type="password" name="password" placeholder="密码">
</div>
<div class="form-group">
<input type="submit" value="登录">
</div>
</form>
</section>
</body>
</html>
index.js
var express = require('express');
var indexmain = express.Router();
var crypto = require('crypto');
var oracledb = require('oracledb');
var http = require('http');
var url = require('url');
var querystring=require("querystring");
indexmain.post('/login', function(req, res, next) {
http.createServer(function(req,res){
res.setHeader("Access-Control-Allow-Methods", "GET,POST");
res.setHeader("X-Powered-By","3.2.1");
res.setHeader("Content-Type","application/json;charset=utf-8");
let data='';
console.log('接收到请i去。。。。');
document.write('createSerrver is connected');// for output the result of testing OK.
//接收数据
req.on('data',function(chunk){
data+=chunk;
});
//接受完毕
req.on('end',function(){
var arr=data.split('&');
let name,password;//保存前端传递来的数据
arr.forEach(function(item){
let arr0=item.split('=');
if(arr0[0]=='username'){
name=arr0[1];
}else if(arr0[0]=='password'){
password=arr0[1];
}
});
//将数据存入数据库
saveData(name,password,function(msg){
res.write(JSON.stringify(msg));
res.end();
});
});
});
function saveData(name,password){
oracledb.getConnection(
{
user : [user],
password : [password],
connectString : [connectString]
},
function(err, connection)
{
if (err) {
console.error(err.message);
return;
}
else{
console.log('connect OK!');
var name = req.body.name;
var password = req.body.password;
var hash = crypto.createHash('md5');
var message;
hash.update(password);
connection.execute(
'SELECT NAME,PASSWORD FROM GUEST', // bind value for :id
function(err, result)
{
if (err) {
console.error(err.message);
return;
}
var columnslength=result.rows[0].length;
var judge = 0;//判断用户名是否存在
for(var i=0;i<result.rows.length;i++){
if(name==result.rows[i][0]){
judge=1;
if(password==result.rows[i][columnslength-1]){
res.render('index',{title:"Express"});
break;
}
else{
res.render('login',{message:'Password is not correct'});
break;
}
}else{
continue;
}
}
if (judge == 0){
res.render('login',{message:'Username is not correct'});
}
}
)
}
}
};
});
/* GET home page. */
indexmain.get('/login', function(req, res, next) {
res.render('login', { message: 'hello' });
});
module.exports = indexmain;
主页
问题 1.login.js没有接收数据说明:在index.js中,createServer()无法从login.js获取'xhr.send("username=[username]&password=[password]")'。(测试:不能执行以下语句)
document.write('createSerrver is connected');
2.status 0,404 error 说明:在第二张图片中,输出显示状态。状态继续停止在 '0' 或 '404' 。
我分析了上面的错误,得出如下结论:
- php.ini 或 httpd.conf 应该使用一些关于 http 的参数进行修改。
- 在编程中,存在一些问题。
您能帮我修改 Apache 中的一些设置或编程中的代码吗?(程序的编译不存在错误)
陈超
chougou1982@hotmail.com 15021734016@139.com
解决方案
推荐阅读
- google-cloud-storage - 下载前获取图像大小
- angular - 在 Angular 路由中,当组件是共享组件时,我如何配置路由?
- node.js - Hyperledger Fabric peer 实例化链码错误
- c - 在过滤器驱动程序中删除文件时生成的 IRP 消息是什么?
- c++ - 将字符串字段映射到变量的更好方法
- macos - chrome 在 Mac 上从 VSCode 调试时没有显示文本
- python - 试图在多个之间收集数据,但由于没有类引用数据而无法获取
- web-crawler - Nutch 登录网站进行爬取
- vba - 循环遍历单元格中的所有表格 + 文本到数字
- wordpress - 让 Shopify/magento/woocommerce 店主从我的 woocommerce 商店添加产品