【问题标题】:Updata table html EJS + Nodejs + Expressjs更新表 html EJS + Nodejs + Expressjs
【发布时间】:2019-07-31 13:15:31
【问题描述】:

我有一个应用程序 nodejs + expressjs + ejs。

我正在构建一个历史搜索屏幕,我的问题是如何使用响应中返回的值更新我的 ejs html 表。

正在使用值上传屏幕,但是当我输入过滤器和搜索时,我想更新我的表格。

下面的例子是如何使用第一次加载带有查询数据的html,我想填写一个初始和最终日期,然后点击搜索和更新html。

EJS HTML

<div class="row">
 <div class="col-md-2">
    <div class="form-group">
       <label for="dataPrimayID">Date Primary</label>
       <input type="text" class="form-control datepickerDefault" id="dataPrimayID" name="dataPrimary" maxlength="250">
    </div>
 </div>
 <div class="col-md-2">
    <div class="form-group">
       <label for="dataFinalID">Date Final</label>
       <input type="text" class="form-control datepickerDefault" id="dataFinalID" name="dataFinal" maxlength="250">
    </div>
 </div>

 <div class="col-md-2">
    <a id="btnSearch" class="btn btn-primary">Search</a>
 </div>
</div>

<div class="row">
 <div class="table-responsive col-md-12">
    <table id="dataTableHistoricoID" class="table table-striped" cellspacing="0" cellpadding="0">
       <thead>
          <tr>
             <th>Name</th>
             <th>LastName</th>
          </tr>
       </thead>
       <tbody>
       <% if(data.length > 0){ %>

          <% for ( var i = 0 ; i < data.length ; i++){ %>
          <tr>
             <td>
                <%= data[i].name%>
             </td>
             <td>
                <%= data[i].lastname%>
             </td>
          </tr>
          <% } %>

       <% } %>
     </tbody>
    </table>
 </div>
</div>

路由器

var express = require('express');
var router = express.Router();

var historyController  = require('../controllers/history-controller');

router.get('/find', historyController.findHistory);

module.exports = router;

控制器

db.query(sql, function (err, rows) {
    if (err) {

        var message = err.message;
        console.log(message);

        return res.status(500).send(message);

    }else {

        var data = rows;
        res.render('history/search-history', {data: data});

    }
});

【问题讨论】:

    标签: node.js express ejs


    【解决方案1】:

    EJS 编译后是静态的,你不能在后端更改它。有两种方法。

    1. 每次要呈现新内容时刷新页面。
    2. 实现将处理 api 请求并呈现新元素的客户端 JS 代码。

    例如,使用 Jquery:

    $.post(url, (result) => {
        let data = JSON.parse(result);
        let innerHTML = '';
        for (let item of data) {
            innerHTML += `<tr>
                 <td>
                    ${item.name}
                 </td>
                 <td>
                    ${item.lastname}
                 </td>
              </tr>`;
        }
        $('#dataTableHistoricoID tbody').html(innerHTML)
    
    };
    
    

    【讨论】:

      猜你喜欢
      • 2017-11-19
      • 2014-06-30
      • 2021-11-03
      • 1970-01-01
      • 2017-05-07
      • 2018-08-28
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      相关资源
      最近更新 更多