nodejs得到另一个页面

时间:2018-12-06 10:11:38

标签: html mysql node.js

我对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>

1 个答案:

答案 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,它将起作用。希望对您有所帮助。