Day 50 (Node.js)

1.保留表单资料

登入资料输入错误,无法登入保留输入值

(1)login.html

    <input type="password" name="txtPassword" id="txtPassword" value="<%= password %>" />

(2)routes > users.js

     //抓到 login.html password="内容" 给 post     router.get('/login', function(req, res, next) {       res.render('login',{ password: "" });     });
     //抓到 接收get 显示 login.html password="txtPassword"     router.post('/login', function(req, res, next) {     if(!userName){      //如果userName是空的,继续login ; 逻辑:felse=0 相反 True         // 使用者指输入password,送出保留password         res.render('login',{ password : req.body.txtPassword });          return;  //跳出此判别式     }});

2.登入后,显示登出

(1)login.html

       <% if (userName == "Guest") { %>       <a href="/users/login" data-icon="star" data-theme="b" data-ajax="false">Login</a>       <% }else{ %>       <a href="/users/logout" data-icon="star" data-theme="b" data-ajax="false">logout</a>       <% } %>

(2)routes > users.js

       router.get('/logout', function(req, res, next) {           req.session.userName ="Guest"; //作法1. 此页面把userName改为Guest           delete req.session.userName;   //作法2. 此页面删除userName            res.redirect('/');             //转跳首页       });

delete 解释

    <script>      var obj = {        firstname: "HIHI",      };      alert(obj.firstname);  //HIHI      delete obj.firstname;      alert(obj.firstname);  //undefined    </script>

3.共同的网页内容

session要搭配动态伺服器,才能随时变更状态及抓资料等等..
http://img2.58codes.com/2024/20137684ARVAzvbCOu.jpg
http://img2.58codes.com/2024/201376847uwnHiiRO1.png


4.连接资料库

(1)MySQL新增资料库资料

(2)建立mySQL物件
var mysql = require("mysql");

(3)连接mySQL物件 帐号,密码,连上哪,port号,资料库

    var conn = mysql.createConnection({          user:"root",                password:"root",        host:"localhost",  //"127.0.0.1",        port:3306,        database:"mask"    }) 

(4)检查连线有无成功(callback)

    conn.connect(function(err){        if (err) {            res.send(  JSON.stringify(err)   )        }    })

(5)送SQL语法

    var idVaule = req.query.id;     conn.query("select * from inventory where id = ?",        [ idVaule ],                                         function (err, result) {          res.send( JSON.stringify(result) );        }    );

5. req使用

req.query.id;

    res.send(req.query.id);     //http://localhost:3000/test?id=3

req.params

    app.get("/hello/:who", function(req,res){    res.send("hello!" + req.params.who);    })    //http://localhost:3000/hello/123.html

req.body

    var data = req.body.userName;    //抓html的body的userName

req.session

    app.get("/writeToSession",function(req,res){           req.session.userName="LILI";        // 写入网页内容    })    // http://localhost:3000/writeToSession

6. 资料库分页 档案Lab13、Node.js06影片

计算分页方式:

    1~10    11~20 page2    1    21~30 page3    2    (page - 1 前面有几页?)  * 10 + 1  + 10    ex:第三页 -1 = 2 * 10(跳过20笔) + 1(从21开始) + 10(到第30笔)    zero-base:    0~9      0               10~19    1    20~29    2    #2 * 10(跳过20笔) + 10(到第30笔)
    var nums_per_page = 10   //每页10笔    var offset = (page - 1) * nums_per_page       var sql =   `SELECT * FROM inventory LIMIT ${offset}, ${nums_per_page};                 SELECT COUNT(*) AS COUNT FROM inventory;`   //(COUNT)28 唯一一个纪录    connection.query(sql, function(error, data) { //data[0] data[1]        if (error) {            console.log(error);        }        // data[1][0].COUNT : SELECT COUNT(*) AS COUNT FROM inventory;`       // 28(总比数)/10 ; ceil无条件进位        var last_page = Math.ceil(data[1][0].COUNT / nums_per_page)           if(page > last_page) {       //页数超过最后一页 到最后一页            res.redirect('/page/'+last_page)            return        }

7. 新增 资料库资料 - 档案Lab14、Node.js06影片

AJAX可以直接吃Json格式,但是网页的值不能直接转Json格式会跑掉
必须先用js转成阵列,然后再转Json格式才可以套用在AJAX

1.取值

      药局名称: <input type="text" name="name" /><br />      电话: <input type="text" name="phone" /><br />      地址: <input type="text" name="address" /><br />      成人口罩库存: <input type="text" name="adult_mask" /><br />      孩童口罩库存: <input type="text" name="child_mask" /><br />        //利用监听事件把资料传进资料库        $("#submit").on("click", function () {        //整理表单资料到变数        var data = $("#form").serializeArray(); // 1.把表单资料变成阵列 ; 只接收name        console.log(data);

2.把阵列变成JSON字串

        JSONData = serializeToJSON(data); // 2.把阵列变成JSON字串 

3.JSON字串function

        function serializeToJSON(data) {        var values = {};        for (index in data) {          // data[0].name;   // 0: {name: "name", value: "1"}          values[data[index].name] = data[index].value;          //   0: {name: "name", value: "1"}          //   1: {name: "phone", value: "2"}          //   2: {name: "address", value: "3"}          //   3: {name: "adult_mask", value: "4"}          //   4: {name: "child_mask", value: "5"}          }          return JSON.stringify(values);          }

4.ajax请求

        $.ajax({          url: "/add", //index.js收取          type: "POST", // 3.用POST方法,对/add丢,contentType格式资料          contentType: "application/json; charset=utf-8",          data: JSONData,          success: function (res) {            var res = JSON.parse(res);            //后端会封装一个response class,预先写好执行No.            if (res.errno === 1) {              alert("新增成功!");          // 4.如果丢成功            } else if (res.errno === 0) {              alert("新增失败!");            }          },          error: function () {            alert("系统错误!");          },        });      });

8.格式:

(1)

       x-www-urlencoded:       name=1&phone=2&address=3

(2)josn物件格式

       appplicatino/josn:       {"name" :"1", "phone" ' : "2" , ,"address":"3","adult mask":"4", "child mask":"5"}

偷吃步

package.json新增
"start": "nodemon index.js"

npm start

http://img2.58codes.com/2024/20137684fb90Ii252N.png


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章