首页 > 解决方案 > 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>

标签: htmlmysqlnode.js

解决方案


你用的是什么视图引擎?如果它是 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 并且它会起作用。我希望这会有所帮助。


推荐阅读