小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

node.js操作文件實(shí)現(xiàn)增、刪、改、查

 wenxuefeng360 2022-08-31 發(fā)布于四川

[目錄]

一、效果展示

1.1目錄結(jié)構(gòu)

├── node_modules    #第三方插件模塊包文件
├── control			#文件操作模塊
│ 	└──control.js 
├── router          #路由模塊
│ 	└──router.js
├── static          #靜態(tài)資源文件存放圖片字體css文件
|
├── views           #存放html模板文件
├── app.js          #主入口文件
├── db.json         #要操作的json文件
復(fù)制代碼

2.初始化項(xiàng)目

 #快速創(chuàng)建項(xiàng)目-不加-y則手動(dòng)配置
 npm init -y
復(fù)制代碼

3.安裝插件

安裝express框架、body-parserPOST請求解析、art-template模板渲染插件nodemon自動(dòng)重啟工具

#安裝Express
npm install --save express 
#安裝art-template
npm install --save art-template
npm install --save express-art-template
#安裝body-parser
npm install --save body-parser
#安裝node自動(dòng)重啟工具
npm install --global nodemon
復(fù)制代碼

4.創(chuàng)建服務(wù)插件配置

在項(xiàng)目目錄根創(chuàng)建主入口文件app.js

文件:app.js

//引入Express框架
const express = require('express');
//引入body-parser
const bodyParser = require('body-parser');
//創(chuàng)建服務(wù)
const app = express();
//配置 post解析 body-parser
app.use(bodyParser.urlencoded({extended:false}));
//端口號
let port = 3000
// 配置靜態(tài)資源
app.use('/static', express.static('static'))
// 配置模板引擎
app.engine('html', require('express-art-template'));
//啟動(dòng)
app.listen(port,()=>{
    console.log('啟動(dòng)成功')
})
復(fù)制代碼

5.路由模塊

將路由分一個(gè)文件做處理router->router.js

渲染模板必須把渲染模板views目錄下

路由器.js

const express = require('express');
const router = express.Router();
//首頁渲染數(shù)據(jù)
router.get('/',  (req, res) => {
    //模板渲染
    res.render('index.html', {
        listData: {
            name:'假數(shù)據(jù)'
        }
    });
})
//導(dǎo)出路由模塊
module.exports = router 
復(fù)制代碼

5.1引入路由模塊

在主入口引入創(chuàng)建好的宣傳文件const router = require('./router/router')在底下掛載幾個(gè)可以使用app.use(router)

文件:app.js

const express = require('express');
const bodyParser = require('body-parser');
//---------------------引入路由模塊-----------------------
const router = require('./router/router')
//------------------------------------------------------
const app = express();
app.use(bodyParser.urlencoded({extended:false}));
let port = 3000
app.use('/static', express.static('static'))
app.engine('html', require('express-art-template'));
//------------------------掛載路由------------------------
app.use(router)
//------------------------------------------------------
app.listen(port,()=>{
    console.log('啟動(dòng)成功')
})
復(fù)制代碼

配置好后可以輸入nodemon ./app.js啟動(dòng),再瀏覽器中輸入本機(jī)IP地址指定3000端口號,192.168xx:3000

5.2 目標(biāo)html模板

layui框架官網(wǎng)www./

layui使用:官網(wǎng)下載文件中的相關(guān)約定static再html中使用layui.csslayui.all.js

此處html搜索2個(gè)文件的首頁頁面

首頁:index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../static/css/layui.css">
    <style>
        .layui-table {
            text-align: center;
        }

        .layui-layout-admin {
            padding: 20px;
        }

        .layui-layout-admin .layui-center {
            text-align: center;
        }

        #form {
            padding: 20px;
        }

        .search {
            width: 300px;
        }

        .flex {
            display: flex;

        }

        .justify-between {
            justify-content: space-between;

        }

        .top-nav {
            width: 100%;
        }
        .margin-bottom{
            margin-bottom: 10px;
        }
    </style>
</head>

<body>
    <div class="layui-container layui-layout-admin">
        <div class="margin-bottom">
            <span class="layui-breadcrumb">
                <a href="/">首頁</a>
            </span>
        </div>
        <div class=" flex justify-between top-nav">
            <button type="button" class="layui-btn" id="add">添加</button>
            <form action="/search">
                <div class="search flex">
                    <input type="text" name="text" placeholder="關(guān)鍵字" class="layui-input input-search ">
                    <button class="layui-btn search-butt" type="submit">搜索</button>
                </div>
            </form>

        </div>
       <!-- 使用layui表格 -->
        <div class="layui-row">
            <table class="layui-table">
                <colgroup>
                    <col width="150">
                    <col width="200">
                    <col>
                </colgroup>
                <thead>
                    <tr>
                        <th class="layui-center">ID</th>
                        <th class="layui-center">名稱</th>
                        <th class="layui-center">性別</th>
                        <th class="layui-center">年齡</th>
                        <th class="layui-center">興趣</th>
                        <th class="layui-center">入學(xué)日期</th>
                        <th class="layui-center">操作</th>
                    </tr>
                </thead>
                <tbody>
                   <tr>
                        <td>4</td>
                        <td>完?duì)僮?lt;/td>
                        <td>男</td>
                        <td>22</td>
                        <td>
                            <span>寫作</span>、
                            
                            <span>閱讀</span>、
                            
                            <span>發(fā)呆</span>、
                        </td>
                        <td>2021-01-21</td>
                        <td>
                            <!--操作按鈕-->
                            <div class="layui-btn-group">
                                <button type="button" class="layui-btn layui-btn-sm edit" data-id="4">
                                    <i class="layui-icon"></i>
                                </button>
                                <button data-id="4" type="button" class="layui-btn layui-btn-sm delete">
                                    <i class="layui-icon"></i>
                                </button>
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
        <!-- 使用layui表單 -->
        <form lay-filter="from" class="layui-form layui-form-pane" action="" id="form" style="display: none;">
            <div class="layui-form-item layui-form-text">
                <label class="layui-form-label">姓名</label>
                <div class="layui-input-block">
                    <input type="text" name="name" required lay-verify="required" placeholder="請輸入標(biāo)題" autocomplete="off"
                        class="layui-input">
                </div>
            </div>
            <div class="layui-form-item layui-form-text">
                <label class="layui-form-label">性別</label>
                <div class="layui-input-block">
                    <input type="radio" name="gender" value="1" title="男">
                    <input type="radio" name="gender" value="2" title="女" checked>
                </div>
            </div>
            <div class="layui-form-item layui-form-text">
                <label class="layui-form-label">年齡</label>
                <div class="layui-input-block">
                    <input type="number" name="age" required lay-verify="required" placeholder="請輸入標(biāo)題"
                        autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item layui-form-text">
                <label class="layui-form-label">興趣</label>
                <div class="layui-input-block checkbox-item">
                    <input type="checkbox" name="like[xiezuo]" title="寫作" value="寫作">
                    <input type="checkbox" name="like[yuedu]" title="閱讀" value="閱讀" checked>
                    <input type="checkbox" name="like[fadai]" title="發(fā)呆" value="發(fā)呆">
                </div>
            </div>
            <div class="layui-form-item layui-form-text">
                <label class="layui-form-label">入學(xué)日期</label>
                <div class="layui-input-block">
                    <input type="text" name="EnterDate" id="test1" required lay-verify="required" placeholder="請輸入標(biāo)題"
                        autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <div class="layui-input-block">
                    <button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
                    <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                </div>
            </div>
        </form>
    </div>
    <script src="../static/layui.all.js"></script>
</body>

</html>
復(fù)制代碼

搜索頁面模板

搜索:search.html

<html lang="en"><head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../static/css/layui.css">
    <style>
        .layui-table {
            text-align: center;
        }

        .layui-layout-admin {
            padding: 20px;
        }

        .layui-layout-admin .layui-center {
            text-align: center;
        }

        #form {
            padding: 20px;
        }

        .search {
            width: 300px;
        }

        .flex {
            display: flex;

        }

        .justify-between {
            justify-content: space-between;
            

        }
        .justify-center{
            justify-content: center;
        }
        .top-nav {
            width: 100%;
        }
    </style>
<link id="layuicss-laydate" rel="stylesheet"  media="all"><link id="layuicss-layer" rel="stylesheet"  media="all"><link id="layuicss-skincodecss" rel="stylesheet"  media="all"></head>

<body>
    
    <div class="layui-container layui-layout-admin">
        <div>
            <span class="layui-breadcrumb" style="visibility: visible;">
                <a href="/">首頁</a><span lay-separator="">/</span>
                <a><cite>搜索</cite></a><span lay-separator="">/</span>
                <a><cite>小</cite></a>
              </span>
        </div>
        <div class=" flex justify-center top-nav">
            <form action="/search">
                <div class="search flex ">
                    <input type="text" name="text" placeholder="關(guān)鍵字" class="layui-input input-search " value="小">
                    <button class="layui-btn search-butt" type="submit">搜索</button>
                </div>
            </form>
        </div>
        <div class="text">
            關(guān)鍵詞:小
        </div>
        <div class="layui-row">
            <table class="layui-table">
                <colgroup>
                    <col width="150">
                    <col width="200">
                    <col>
                </colgroup>
                <thead>
                    <tr>
                        <th class="layui-center">ID</th>
                        <th class="layui-center">名稱</th>
                        <th class="layui-center">性別</th>
                        <th class="layui-center">年齡</th>
                        <th class="layui-center">興趣</th>
                        <th class="layui-center">入學(xué)日期</th>
                        <th class="layui-center">操作</th>
                    </tr>
                </thead>
                <tbody>
                    
                    <tr>
                        <td>11</td>
                        <td>小鬼頭</td>
                        <td>男</td>
                        <td>6</td>
                        <td>
                            
                            <span>寫作</span>、
                            
                            <span>閱讀</span>、
                            
                            <span>發(fā)呆</span>、
                            
                        </td>
                        <td>2021-01-15</td>
                        <td>
                            <div class="layui-btn-group">
                                <button type="button" class="layui-btn layui-btn-sm edit" data-id="11">
                                    <i class="layui-icon"></i>
                                </button>
                                <button data-id="11" type="button" class="layui-btn layui-btn-sm delete">
                                    <i class="layui-icon"></i>
                                </button>
                            </div>
                        </td>
                    </tr>
                    
                </tbody>
            </table>
        </div>
        <!-- 填寫表單 -->
        <form lay-filter="from" class="layui-form layui-form-pane" action="" id="form" style="display: none;">
            <div class="layui-form-item layui-form-text">
                <label class="layui-form-label">姓名</label>
                <div class="layui-input-block">
                    <input type="text" name="name" required="" lay-verify="required" placeholder="請輸入標(biāo)題" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item layui-form-text">
                <label class="layui-form-label">性別</label>
                <div class="layui-input-block">
                    <input type="radio" name="gender" value="1" title="男"><div class="layui-unselect layui-form-radio"><i class="layui-anim layui-icon"></i><div>男</div></div>
                    <input type="radio" name="gender" value="2" title="女" checked=""><div class="layui-unselect layui-form-radio layui-form-radioed"><i class="layui-anim layui-icon"></i><div>女</div></div>
                </div>
            </div>
            <div class="layui-form-item layui-form-text">
                <label class="layui-form-label">年齡</label>
                <div class="layui-input-block">
                    <input type="number" name="age" required="" lay-verify="required" placeholder="請輸入標(biāo)題" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item layui-form-text">
                <label class="layui-form-label">興趣</label>
                <div class="layui-input-block checkbox-item">
                    <input type="checkbox" name="like[xiezuo]" title="寫作" value="寫作"><div class="layui-unselect layui-form-checkbox"><span>寫作</span><i class="layui-icon layui-icon-ok"></i></div>
                    <input type="checkbox" name="like[yuedu]" title="閱讀" value="閱讀" checked=""><div class="layui-unselect layui-form-checkbox layui-form-checked"><span>閱讀</span><i class="layui-icon layui-icon-ok"></i></div>
                    <input type="checkbox" name="like[fadai]" title="發(fā)呆" value="發(fā)呆"><div class="layui-unselect layui-form-checkbox"><span>發(fā)呆</span><i class="layui-icon layui-icon-ok"></i></div>
                </div>
            </div>
            <div class="layui-form-item layui-form-text">
                <label class="layui-form-label">入學(xué)日期</label>
                <div class="layui-input-block">
                    <input type="text" name="EnterDate" id="test1" required="" lay-verify="required" placeholder="請輸入標(biāo)題" autocomplete="off" class="layui-input" lay-key="1">
                </div>
            </div>
            <div class="layui-form-item">
                <div class="layui-input-block">
                    <button class="layui-btn" lay-submit="" lay-filter="formDemo">立即提交</button>
                    <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                </div>
            </div>
        </form>
    </div>
    <script src="../static/layui.all.js"></script>
</body></html>
復(fù)制代碼

6.渲染首頁數(shù)據(jù)

渲染首頁數(shù)據(jù)前先創(chuàng)建一個(gè)json文件db.json根目錄

6.1創(chuàng)建db.json文件

文件:db.json

{
    "list": [
        {
            "name": "張三",
            "gender": 1,
            "age": 22,
            "interest": {
                "like[xiezuo]": "寫作",
                "like[yuedu]": "閱讀",
                "like[fadai]": "發(fā)呆"
            },
            "EnterDate": "2021-01-21",
            "id": 4
        }
    ]
}
復(fù)制代碼

6.2 包裝文件整理操作

db.json文件創(chuàng)建完成后新建一個(gè)模塊是操作這個(gè)文件的增、刪、改、查、文件名control->control.js

  • 封裝一個(gè)讀文件操作將字符串轉(zhuǎn)成對象返回出去

  • 將一個(gè)對象轉(zhuǎn)換成字符串寫入db.json文件中

文件:control.js

//引入fs模塊
const fs = require('fs');
//設(shè)置要讀的文件路徑
const path = './db.json'
//讀文件
exports.Read = ()=>{
    let fileData = ''
    try{
        //這里使用的時(shí)node的同步讀取文件的api [readFileSync]
        fileData = fs.readFileSync(path,'utf-8');
        console.log(fileData)
    }catch (err) {
        // 出錯(cuò)了
        console.log(err)
    }
    //讀取到的文件轉(zhuǎn)成對象返回
    return JSON.parse(fileData)
}
//寫入文件-接收一個(gè)參數(shù)要追加的數(shù)據(jù)
exports.Write= (data)=>{
    try{
        //這里同樣使用了node同步寫入文件api[writeFileSync]
        fs.writeFileSync(path,JSON.stringify(data),'utf8')
    }catch(err){
        //出錯(cuò)
        console.log(err)
    }
}
復(fù)制代碼

6.2在router.js中使用control.js

完成以上2個(gè)讀寫api后可以進(jìn)行首頁數(shù)據(jù)渲染,將文件control.jsrouter.js中引用即可使用

文件:router.js

請求地址類型參數(shù)說明
/GET渲染首頁模板和數(shù)據(jù)
const express = require('express');
//引入讀寫文件
const control = require('../control/control.js')
const router = express.Router();
//首頁渲染數(shù)據(jù)
router.get('/',  (req, res) => {
    //讀文件
    let data =  control.Read();
    res.render('index.html', {
        listData: data.list //將拿到的數(shù)據(jù)掛載到模板上
    });
})
module.exports = router 
復(fù)制代碼

6.3渲染數(shù)據(jù)

在模板中用模板語法把數(shù)據(jù)渲染出來

art-template官網(wǎng)aui./art-templat…

文件:index.html

{{each listData}}
<tr>
    <td>{{$value.id}}</td>
    <td>{{$value.name}}</td>
    <td>{{$value.gender==1?'男':'女'}}</td>
    <td>{{$value.age}}</td>
    <td>
        {{each $value.interest}}
        <span>{{$value}}</span>、
        {{/each}}
    </td>
    <td>{{$value.EnterDate}}</td>
    <td>
        <div class="layui-btn-group">
            <!--使用data-id自定義屬性將ID賦值方便再點(diǎn)擊操作時(shí)取得每行得ID-->
            <button type="button" class="layui-btn layui-btn-sm edit" data-id="{{$value.id}}">
                <i class="layui-icon">&#xe642;</i>
            </button>
            <button  type="button" class="layui-btn layui-btn-sm delete" data-id="{{$value.id}}">
                <i class="layui-icon">&#xe640;</i>
            </button>
        </div>
    </td>
</tr>
{{/each}}
復(fù)制代碼

7.實(shí)現(xiàn)新{增}功能

7.1后端

文件:router.js

  • 這里接收表單數(shù)據(jù)結(jié)構(gòu){"name":"完?duì)僮?,"gender":1,"age":22,"interest":{"like[xiezuo]":"寫作","like[yuedu]":"閱讀","like[fadai]":"發(fā)呆"},"EnterDate":"2021-01-21"}

  • 讀取db.json中的數(shù)據(jù)

  • 將前端發(fā)來的數(shù)據(jù)進(jìn)行轉(zhuǎn)換成對象

  • 在為這條數(shù)據(jù)分配一個(gè)ID,這里直接拿到表中最后一條數(shù)據(jù)的id然后再+1

  • 分配完ID后將數(shù)據(jù)push進(jìn)入上面讀取的到數(shù)據(jù)中

  • 數(shù)據(jù)寫入文件中

請求地址類型參數(shù)說明
/addPOST表單數(shù)據(jù)向列表中新增一條數(shù)據(jù)
//添加
router.post('/add',  (req, res) => {
    //讀文件
    let data =  control.Read();
    //獲取前端傳來的數(shù)據(jù)
    let getData =JSON.parse(req.body.data);
    //分配ID
    getData.id = data.list[data.list.length-1].id + 1
    //新增一條數(shù)據(jù)
    data.list.push(getData)
    //寫入文件
    control.Write(data);
    //返回給前端
    res.json(getData);
})
復(fù)制代碼

7.2前端

這里先創(chuàng)建用戶的按鈕編輯添加變量,用于記錄addEdit當(dāng)前點(diǎn)擊的是公用編輯的,或者是記錄當(dāng)前刪除時(shí)刪除保存的IDuserID

文件:index.html

ajax傳值設(shè)置,否則節(jié)點(diǎn)那里必須traditional: true不能得到正常的數(shù)據(jù),還有一個(gè)問題必須把內(nèi)層的數(shù)據(jù)轉(zhuǎn)成json字符串,否則節(jié)點(diǎn)也不能得到正常的數(shù)據(jù)

let addEdit = 1 //用來判斷當(dāng)前點(diǎn)擊的時(shí)編輯還是新增 [1:表示新增,2表示編輯]
let userID = 0  //點(diǎn)擊編輯和刪除時(shí)用來保存當(dāng)前ID 
layui.use(['layer', 'jquery', 'form', 'laydate'], function () {
     const $ = layui.$
     const form = layui.form;
     const laydate = layui.laydate;
     //點(diǎn)擊添加按鈕彈出新增表單
     $('#add').click(function () {
        addEdit = 1
        layer.open({
            type: 1,
            content: $('#form') //這個(gè)表單再html文件中做隱藏不直接顯示
        });
        //重置表單
        document.getElementById('form').reset();
     });
     //監(jiān)聽提交
     form.on('submit(formDemo)', function (data) {
         //拿到表單的數(shù)據(jù)進(jìn)行賦值給dataItem
        var dataItem = {
            "name": data.field.name,
            "gender": parseInt(data.field.gender),
            "age": parseInt(data.field.age),
            "interest": {},
            "EnterDate": data.field.EnterDate
        };
         //這里特殊處理多選框成為我們想要的數(shù)據(jù)結(jié)構(gòu) {"like[xiezuo]":"寫作","like[yuedu]":"閱讀","like[fadai]":"發(fā)呆"}
        $('.checkbox-item input').each((index, item) => {
            if (item.checked) {
                dataItem.interest[item.name] = item.value
            }
        });
         //addEdit=1則為新增
        if (addEdit == 1) {
           //ajax傳值必須設(shè)置traditional: true,否則node那邊無法拿到正常的數(shù)據(jù),再一個(gè)就是必須把內(nèi)層的數(shù)據(jù)轉(zhuǎn)成json字符串否則node也無法拿到正常的數(shù)據(jù)
            $.ajax({
                url: '/add',
                type: 'POST',
                data: { data: JSON.stringify(dataItem) },
                traditional: true,
                success: (msg) => {
                    layer.msg("添加成功!");
                    //添加成功后刷新頁面
                    setTimeout(() => {
                        window.location.reload();
                    }, 500)

                }
            })
        } else {
            //實(shí)現(xiàn)修改操作
        }
        return false;
    });
})
復(fù)制代碼

8.實(shí)現(xiàn){除}功能

  • 接收接收傳輸來的ID
  • 先把文件數(shù)據(jù)讀取出來
  • 使用ES6方法findIndex檢索ID 如果返回當(dāng)前ID所在的下標(biāo)
  • 使用方法splice對當(dāng)前數(shù)據(jù)刪除
  • 寫入文件

8.1 因?yàn)?/font>

請求地址類型參數(shù)說明
/刪除得到了ID要?jiǎng)h除某條數(shù)據(jù)
//刪除
router.get('/delete', (req, res) => {
    //讀文件
    let data =  control.Read();
    //檢索用戶返回index
    let userIndex = data.list.findIndex(item => item.id == req.query.id);
    // 刪除
    data.list.splice(userIndex, 1);
    //寫入文件
    control.Write(data);
    res.json(data);
})
復(fù)制代碼

8.2前端

  • 彈窗提示用戶是否刪除此數(shù)據(jù)
  • 確認(rèn):刪除請求成功時(shí)刷新頁面
 //刪除
$('.delete').click(function () {
    //獲取當(dāng)前點(diǎn)擊得節(jié)點(diǎn)上得ID
    userID = $(this).attr('data-id');
    //使用layui確認(rèn)彈窗
    layer.confirm('確定要?jiǎng)h除嗎?', {
        btn: ['確認(rèn)', '取消'], btn1: function (index, layero) {
            layer.close(index);
            //用戶點(diǎn)擊確認(rèn)時(shí)發(fā)送刪除請求/delete 傳遞ID 
            $.ajax({
                url: '/delete',
                type: 'GET',
                data: { id: userID },
                traditional: true,
                success: (res) => {
                    layer.msg("刪除成功!");
                    setTimeout(() => {
                        window.location.reload();
                    }, 500)

                }
            })
        }
    });
})
復(fù)制代碼

9.實(shí)現(xiàn)修改{改}功能

9.1 因?yàn)?/font>

  • 到最后傳來的ID
  • 讀取所得文件數(shù)據(jù)然后再進(jìn)行查找ID數(shù)據(jù)對象返回給前端
  • 最終數(shù)據(jù)對進(jìn)行形式
請求地址類型參數(shù)說明
/獲取信息得到了ID返回用戶要修改的信息
/編輯郵政ID修改用戶信息

文件:router.js

//讀取用戶信息
router.get('/getInfo',  (req, res) => {
    let data =  control.Read();
   // 用戶find 方法查找對應(yīng)ID 的數(shù)據(jù)返回給前端
    let userInfo = data.list.find(item => item.id == req.query.id);
    res.json(userInfo);
})
//修改用戶信息
router.post('/edit',  (req, res) => {
    //拿數(shù)據(jù)
    let getData =JSON.parse(req.body.data);
    //讀文件
    let data =  control.Read();
    //檢索用戶返回index
    let userIndex = data.list.findIndex(item => item.id == getData.id);
    // 更新用戶信息
    data.list[userIndex] = getData
    //寫入文件
    control.Write(data);
    res.json(getData);
})
復(fù)制代碼

9.2前端

  1. 點(diǎn)擊修改按鈕
//點(diǎn)擊編輯按鈕
$(".edit").click(function (e) {
    //將全局變量設(shè)置為2標(biāo)識為修改
    addEdit = 2
    //拿到當(dāng)前要修改的數(shù)據(jù)ID
    userID = $(this).attr('data-id');
    //獲取要修改的數(shù)據(jù)信息,給表單進(jìn)行賦值操作
    $.ajax({
        url: '/getInfo',
        type: 'get',
        data: { id: userID },
        traditional: true,
        success: (data) => {
            let fromData = {
                "name": data.name,
                "gender": data.gender,
                "age": data.age,
                "like[xiezuo]": false,
                "like[yuedu]": false,
                "like[fadai]": false,
                "EnterDate": data.EnterDate
            }
            //給復(fù)選框賦值
            $('.checkbox-item input').each((index, item) => {
                if (data.interest[item.name]) {
                    fromData[item.name] = true
                }
            });
            //表單賦值
            form.val("from", fromData);
        },
        error: (err) => {
            console.log(err, '錯(cuò)誤了')
        }

    })
    layer.open({
        type: 1,
        content: $('#form') //這里content是一個(gè)DOM,注意:最好該元素要存放在body最外層,否則可能被其它的相對元素所影響
    });
})
復(fù)制代碼

2.點(diǎn)擊提交按鈕

//監(jiān)聽提交
form.on('submit(formDemo)', function (data) {
    var dataItem = {
        "name": data.field.name,
        "gender": parseInt(data.field.gender),
        "age": parseInt(data.field.age),
        "interest": {},
        "EnterDate": data.field.EnterDate
    };
    $('.checkbox-item input').each((index, item) => {
        if (item.checked) {
            dataItem.interest[item.name] = item.value
        }
    });
    if (addEdit == 1) {
		//新增一條數(shù)據(jù)
    } else {
        //--------------------------------------確認(rèn)修改表單---------------------------------//
        dataItem.id = parseInt(userID);
        $.ajax({
            url: '/edit',
            type: 'POST',
            data: { data: JSON.stringify(dataItem) },
            traditional: true,
            success: (msg) => {
                layer.msg("修改成功!");
                setTimeout(() => {
                    window.location.reload();
                }, 500);
            }
        })
    }
    return false;
});
復(fù)制代碼

10.實(shí)現(xiàn){查}功能尋找

10.1 因?yàn)?/font>

請求地址類型參數(shù)說明
/搜索
  • 使用indexOf方法,對name領(lǐng)域中的檢索關(guān)鍵字如果有就進(jìn)行push到臨時(shí)對象中
  • 臨時(shí)對象數(shù)據(jù)到前端
//搜索
router.get('/search', (req, res) => {
    let list = []
    //讀文件
    let data =  control.Read();
    //檢索用戶返回index
    data.list.forEach((item, index, array)=>{
        if(item.name.indexOf(req.query.text)!=-1){
            list.push(item)
        }
    })
    //寫入文件
    // control.Write(data);
    res.render('search.html', {
        listData: list,
        search:req.query.text
    });
})
復(fù)制代碼

10.2前端

文件:search.html

<div class="layui-container layui-layout-admin">
    <!----------------------面包屑導(dǎo)航--------------------------->
    <div>
        
        <span class="layui-breadcrumb">
            <a href="/">首頁</a>
            <a><cite>搜索</cite></a>
            <a><cite>{{search}}</cite></a>
        </span>
    </div>
    
     <!----------------------搜索表單--------------------------->
    <div class=" flex justify-center top-nav">
        <form action="/search">
            <div class="search flex ">
                <input type="text" name="text" placeholder="關(guān)鍵字" class="layui-input input-search " value="{{search}}">
                <button class="layui-btn search-butt" type="submit">搜索</button>
            </div>
        </form>
    </div>
     <!----------------------搜索關(guān)鍵字--------------------------->
    <div class="text">
        關(guān)鍵詞:{{search}}
    </div>
    <!----------------------完--------------------------->
    <div class="layui-row">
        <table class="layui-table">
            <colgroup>
                <col width="150">
                <col width="200">
                <col>
            </colgroup>
            <thead>
                <tr>
                    <th class="layui-center">ID</th>
                    <th class="layui-center">名稱</th>
                    <th class="layui-center">性別</th>
                    <th class="layui-center">年齡</th>
                    <th class="layui-center">興趣</th>
                    <th class="layui-center">入學(xué)日期</th>
                    <th class="layui-center">操作</th>
                </tr>
            </thead>
            <tbody>
                {{each listData}}
                <tr>
                    <td>{{$value.id}}</td>
                    <td>{{$value.name}}</td>
                    <td>{{$value.gender==1?'男':'女'}}</td>
                    <td>{{$value.age}}</td>
                    <td>
                        {{each $value.interest}}
                        <span>{{$value}}</span>、
                        {{/each}}
                    </td>
                    <td>{{$value.EnterDate}}</td>
                    <td>
                        <div class="layui-btn-group">
                            <button type="button" class="layui-btn layui-btn-sm edit" data-id="{{$value.id}}">
                                <i class="layui-icon">&#xe642;</i>
                            </button>
                            <button data-id="{{$value.id}}" type="button" class="layui-btn layui-btn-sm delete">
                                <i class="layui-icon">&#xe640;</i>
                            </button>
                        </div>
                    </td>
                </tr>
                {{/each}}
            </tbody>
        </table>
    </div>
復(fù)制代碼

這里沒有用 Ajax 的判斷,這做了一個(gè)讓用戶不能提交的表單

//搜索
$('.search-butt').click(function () {
    let text =  $('.input-search').val();
    if(text==''){
        layer.msg("請輸入關(guān)鍵字");
        return false
    }
})
復(fù)制代碼

github

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多