首页 > 解决方案 > 根据在nodejs ajax jquery上登录的用户过滤数据

问题描述

我的问题是关于根据 jquery 数据表上的用户登录来过滤数据。我已经设法使用 jquery ajax 从 jquery 数据表上的数据库中检索数据。现在,当我使用用户登录时,用户看到的不是他/她自己的表的所有表。(换句话说,我只想转到包含股票数据的用户个人资料页面)我在登录时没有收到错误我可以看到服务器控制台上的用户信息,但在 html 端,我猜有些东西不完整。我的数据库包含 2 个表(用户、库存),我可以从 stok 表的“id”列访问用户表(id)。

登录.js

router.post('/', function(request, response) {
    var username = request.body.user_name;
    var password = request.body.pass;
    console.log(username);
    console.log(password);

        connection.query('SELECT * FROM users WHERE user_name=?', [username, password], function(error, results) {
                        console.log(results);
                        if(error){throw error;}
                if(results.length>0){
                                if(results[0].pass == password){
                                response.sendFile(path.join(__dirname +'/secondPage.html')); } else{
                                response.sendFile(path.join(__dirname + '/error.html'));
                             }
                            }else{
                                response.sendFile(path.join(__dirname + '/error.html'));                            
                             } });});

secondPage.js

 /*mysql connection and requirements*/
router.use(bodyParser.urlencoded({extended : true}));
router.use(bodyParser.json());

//list of the stocks
router.get('/',(req,res)=>{ 

    connection.query('SELECT * FROM stok s, users u WHERE s.id= u.id',(err,rows,fields)=>{
    /*I know I should add "AND u.id=?" to this query but my pages cannot handle id between pages" */

        if(!err){
            console.log(rows);

        var objs = [];

    for (var i = 0;i < rows.length; i++) {
            objs.push(rows[i]); 
    }
    var ret={"data":objs};
        res.end(JSON.stringify(ret));
        console.log(JSON.stringify(ret));
        }
        else{
            console.log(err);

        }
    });
});

HTML-secondpage

    <html>
    <head>
    <link rel="stylesheet" type="text/css" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/dataTables.jqueryui.min.css">
    <script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-3.3.1.js"></script>
        <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
        <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.19/js/dataTables.jqueryui.min.js"></script>
    <!--    <script type="text/javascript" charset="utf-8" src="js/dataTables.editor.min.js"></script>-->

        </head>
        <body>
    <script>
        $(document).ready(function (){

           $('#stockManager').DataTable({
              responsive: true,

             ajax : {
                url : "http://localhost:3000/secondPage",

             },
              columns: [
                  {data : "urun_adi"}, 
                  {data : "barkod"}, 
                  {data : "stok_sayi"}, 
                  {data : "satis_fiyati"}, 
                  {data : "maliyet"},
                  {data : "firma_adi"}
              ],
             select: true
           });
        });
    </script>
    <table id="stockManager" class="display" style="width:100%">
        <thead>
            <tr>

                <th>Adı</th>
                <th>Kod</th>
                <th>Miktar</th>
                <th>Satış Fiyatı</th>
                <th>Maliyet</th>
                <th>Tedarikçi</th>
            </tr>
        </thead>
        <tbody>
        </tbody>
    </table>
    </script>
    </body>
    </html>

LOGIN HTML 

   <body>

    <div class="limiter">
        <div class="container-login100" style="background-image: url('images/bg-01.jpg');">
            <div class="wrap-login100 p-l-55 p-r-55 p-t-65 p-b-54">
                <form action="http://localhost:3000/login" method="POST" class="login100-form validate-form">
                    <span class="login100-form-title p-b-49">
                        Login
                    </span>

                    <div class="wrap-input100 validate-input m-b-23" data-validate = "Username is reauired">
                        <span class="label-input100">Username</span>
                        <input id="username" class="input100" type="username" name="user_name" placeholder="Username" required>
                        <span class="focus-input100" data-symbol="&#xf206;"></span>
                    </div>

                    <div class="wrap-input100 validate-input" data-validate="Password is required">
                        <span class="label-input100">Password</span>
                        <input id="password" class="input100" type="password" name="pass" placeholder="Password" required>
                        <span class="focus-input100" data-symbol="&#xf190;"></span>
                    </div>

                    <div class="text-right p-t-8 p-b-31">
                        <a href="#">
                            Forgot password?
                        </a>
                    </div>
                    <div class="text-right p-t-8 p-b-31">
                        <a href="#">
                            Change password(recommended for first loggers)
                        </a>
                    </div>

                    <div class="container-login100-form-btn">
                        <div class="wrap-login100-form-btn">
                            <div class="login100-form-bgbtn"></div>
                            <button id="records" type="submit" class="login100-form-btn">
                                Login
                            </button>
                        </div>
                    </div>

                </form>
            </div>  
        </div>
    </div>
</body>
</html>

应用程序.js

const express = require('express');
const app = express();

const loginRoutes = require('./login');
const stockRoutes = require('./secondPage');

// Routes which should handle requests
app.use('/login', loginRoutes);
app.use('/secondPage', stockRoutes);

//bodyparser for posts

module.exports = app;

标签: jquerymysqlnode.js

解决方案


您需要为后端传递用户名

 ajax : {
            url : "http://localhost:3000/secondPage/johndoe",

         },

获取查询字符串参数,并修复 SQL:

router.get('/:username',(req,res)=>{ 
    connection.query('SELECT * FROM stok s, users u WHERE s.id= u.id and username=?',[req.params.username],(err,rows,fields)=>{
        if(!err){
        var objs = [];
    for (var i = 0;i < rows.length; i++) {
            objs.push(rows[i]); 
    }
    var ret={"data":objs};
        res.end(JSON.stringify(ret));
        console.log(JSON.stringify(ret));
        }else{
            console.log(err);}  });});

推荐阅读