如何在不刷新html页面的情况下在表格上显示数据(使用nodejs和mysql ajax)

Posted

技术标签:

【中文标题】如何在不刷新html页面的情况下在表格上显示数据(使用nodejs和mysql ajax)【英文标题】:How to Display data on a table without refreshing html page (using nodejs & mysql ajax) 【发布时间】:2017-02-10 05:05:04 【问题描述】:

我正在尝试使用 nodejs & express 将 mysql 表中的数据列出到我的 html 页面。

我正在使用 nodejs & express 并希望使用 ajax 调用将数据从 mysql 表列出到 html 页表,以便在添加新项目时不会刷新页面。目前,我使用 express 语法直接显示结果,并且与数据表完美配合。

mysql中我的表tablename-metrics_list数据是这样的-

标识 |指标 |自定义指标

1  | abcd    | abcd

2  | abcd    | abcd

3  | abcd    | abcd

我的Server端js代码如下-

router.get('/', function(req, res) 
    try 
        sess = req.session;
        if (sess.user != req.session.id) 
            console.log('SESSION EXPRED');
            res.redirect('/');
         else 
            console.log('******LISTING FOR PORTAL');
            connection.query('SELECT * FROM metrics', function(err, data) 
                if (err) 
                    console.log("## Error in Portal ##");

                 else 
                    console.log("DATA " + JSON.stringify(data));
                    res.render('metrics-list', 
                        metricsList: data
                    );
                
            );
        
     catch (ex) 
        console.log("Exception : " + ex);
    
); 

我的HTML表格代码是:

 <table cellpadding="0" cellspacing="0" border="0"   class="table table-striped table-bordered dataTable no-footer" id="basic-datatable" role="grid" aria-describedby="basic-datatable_info">
                            <thead>
                                <tr role="row">
                                    <th class="sorting_asc" tabindex="0" aria-controls="basic-datatable" rowspan="1" colspan="1" aria-sort="ascending" aria-label="Rendering engine: activate to sort column descending" style="width: 40px;">Sr No</th>
                                    <th class="sorting" tabindex="0" aria-controls="basic-datatable" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending" style="width: 80px;">Group</th> 
                                    <th class="sorting" tabindex="0" aria-controls="basic-datatable" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending" style="width: 80px;">Actions</th>                                                                      
                                </tr>
                            </thead>
                            <tbody>
                                <%for(var j=0;j<metricsList.length;j++)%>
                                    <% if(metricsList[j].custom_metrics == '' || metricsList[j].custom_metrics == null)  %>

                                    <%  else  %>
                                    <tr class="gradeA odd" role="row">
                                            <td class="sorting_1"><%=j+1%></td>

                                            <td ><%=metricsList[j].custom_metrics %></td> 

                                            <td style="text-align: center;"> <a href="/metrics/delete?id=<%=metricsList[j].id%>" onclick="return confirm('Are you sure you want to delete this item?');">
                                                        <i class="glyphicon glyphicon-trash" ></i></a> </td>                                   
                                    </tr>                                      
                                    <%  %>  

                                <%%>
                            </tbody>
                        </table>
                <!-- TABLE END -->

我想弄清楚如何使用ajax列出表格,以便在mysql中添加数据时,它立即显示在列表中,而不会刷新整个html页面。

【问题讨论】:

使用ajax ***.com/a/4038587/2277289 你的意思是像websockets ?从您的问题陈述来看,它看起来更像是一个套接字连接而不是 ajax。如果您使用 ajax,您将使用长轮询,这是一件昂贵的事情:) 【参考方案1】:

您可以删除现有的 tbody 内容,然后在 jQuery AJAX 回调中使用 jQuery 重新渲染。有点像..

success: function (result)      
    $('tbody').empty();
    for (var data in result) 
       $('tbody').append('<tr class="gradeA odd" role="row"><td style="word-break: break-all;">data.custom_metrics</td></tr>');
    
)

【讨论】:

以上是关于如何在不刷新html页面的情况下在表格上显示数据(使用nodejs和mysql ajax)的主要内容,如果未能解决你的问题,请参考以下文章

如何在不刷新页面的情况下在屏幕上显示新记录?

如何在不刷新闪烁的情况下在浏览器中显示不断变化的图像文件?

在 Rails 4 中,如何在不刷新的情况下在页面上提交表单和更新元素

如何在不刷新页面的情况下在 ReactJS 中重新加载?

javascript - 有没有办法在不刷新页面的情况下在 div 上上传和预览图像(替换背景图像)?

Django:如何在不重新加载的情况下在页面上显示更新的信息