html - nodejs获取另一个页面
问题描述
我有一个关于 nodejs 和 html 的小问题。我看不到的地方有错误。我已经收到此错误 2 天。(无法获取/aP.html) sql连接没有错,第一页和第二页。但是当我想从第二页转到 aP.html 时,我不断收到此错误。我的nodejs代码:
var mysql = require('mysql');
var express = require('express');
var bodyParser = require('body-parser');
var path = require('path');
var connection = mysql.createConnection({
......
});
connection.connect((err) => {
if(err){
throw err;}
else console.log("connected");
});
var app = express();
app.use(bodyParser.urlencoded({extended : true})); //forma girilen datanın parse edilebilmesi için
//başka directorylerdeki klasörleri kullanacaksan
app.use('/js', express.static(__dirname + '.....'));
//gidilecek sayfa
app.get('/', function(request, response) {
res.render('/aP.html', {});;
});
console.log("got it");
app.post('/aP.html', function(request, response) {
var p_name = request.body.urun_adi;
var code = request.body.barkod;
var quantity = request.body.stok_sayi;
var price = request.body.satis_fiyati;
var cost = request.body.maliyet;
var supplier = request.body.firma_adi;
// var username = request.body.id;
/* foreign key olan user id burada kullanılacak mı?*/
console.log(p_name);
connection.query( "INSERT INTO `stok` (`urun_adi`, `barkod`, `stok_sayi`, `satis_fiyati`, `maliyet`, `firma_adi`) VALUES ('"+p_name +"','"+ code +"','"+ quantity +"','"+ price +"','"+ cost +"','"+ supplier+"')");
if(err) throw err;
response.send('save succesful');
});
app.listen(3000);
我的 HTML 代码(仅供尝试):
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="/aP.html" method="post" class= "col s12">
<input type="hidden" name="e_id" value="">
<div class="form-group row">
<label for="p_name" class="col-2 col-form-label"> Adı</label>
<div class="col10">
<input type="text" name="p_name" value="" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="code" class="col-2 col-form-label"> Barkod</label>
<div class="col10">
<input type="text" name="code" value="" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="quantity" class="col-2 col-form-label"> Adet</label>
<div class="col10">
<input type="text" name="quantity" value="" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="price" class="col-2 col-form-label"> Fiyat</label>
<div class="col10">
<input type="text" name="price" value="" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="cost" class="col-2 col-form-label"> Maliyet</label>
<div class="col10">
<input type="text" name="cost" value="" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="supplier" class="col-2 col-form-label"> Tedarikçi</label>
<div class="col10">
<input type="text" name="supplier" value="" class="form-control">
<input type="submit" name="submit" value="Save Stock">
</div>
</div>
</form>
</body>
</html>
解决方案
你用的是什么视图引擎?如果它是 ejs,您将不得不要求它并更改您的一些代码。看看我的例子,也许它会为你解决问题。如果这是你的问题。
首先 npm 安装 ejs
Index.js 或 server.js 取决于你的名字。(开始文件)
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(express.static("public"))
app.use(bodyParser.urlencoded({ extended: true }));
app.set('view engine', 'ejs');
app.set("port", 3001)
app.get('/', function (req, res) {
res.render('index')
});
app.use('*', function (req, res) {
res.status(400);
res.json({
'error': 'Deze URL is niet beschikbaar.'
});
});
app.listen(process.env.PORT || 3001, function() {
console.log('De server luistert op port ' + app.get('port'));
});
module.exports = app;
然后在项目的根目录下创建一个views目录。(与 index.js 相同级别)命名它很重要。
在 views 文件夹中创建一个扩展名为 .ejs 的文件(在您的情况下为 aP)。没有 HTML 扩展,因为您将使用 ejs 视图引擎。它将自动在 de views 目录中搜索 ejs 文件。将 aP.html 中的 html 代码放入新创建的 aP.ejs 文件中。
我希望这是您正在寻找的答案,如果有任何其他问题或者您想以不同的方式进行操作,请告诉我。
编辑:没有ejs的不同方式
更改此行:
app.get('/', function(request, response) {
res.render('/aP.html', {});;
});
进入这个:
app.get('/', function(request, response) {
response.sendFile(path.join(__dirname+'/aP.html'));;
});
确保 aP.html 与 index.js 文件处于同一级别。
您的问题是(我认为)无法识别 res 因为您将其命名为响应。此外,您应该使用 sendFile 并且它会起作用。我希望这会有所帮助。
推荐阅读
- winston - winstonjs - 通过管道使用winston记录子进程stdout / stderr
- winforms - Windows 窗体应用程序 - 如何使选项卡控件中的选项卡获得全宽?
- r - 自动生成pdf和txt文件的名称
- javascript - Chrome 扩展打开了更多的标签
- java - 比较两个数组,然后用公共元素制作另一个数组(并且没有重复)
- ios - JSON key:value pairs disappearing after original json call
- html - 我如何获取 url 参数链接/#parameter
- sql - 如何在更新查询中使用 case、when、in
- python - 由于 libffi,无法在树莓派上安装密码学
- python - 如何从服务器端的网页保存文档?