我对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>
答案 0 :(得分:0)
您使用的是哪种视图引擎?如果是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;
然后在项目的根目录中创建一个视图目录。 (与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文件处于同一级别。
您的问题是(我认为)无法识别资源,因为您将其命名为响应。此外,您应该使用sendFile,它将起作用。希望对您有所帮助。