在没有直接DOM操作的情况下动态刷新div

时间:2013-06-06 13:37:39

标签: node.js express

我必须更新一个表,一个列表,如果有一些值。我可以插入新值并尝试重新加载整个页面以再次显示表格或列表值。

如果我尝试一下Ajax更新,我必须操纵DOM,创建一堆新标签,连接并在旧版本上注入新的HTML。这不是一种痛苦的方式,您甚至必须重新键入之前创建的代码才能展示新条目。

例如:这是一个虚构的例子,说明了我的意思:

$.ajax({
    url: '/post/addComment/',
    type: 'POST',
    data: 'comment=' + comment,
    beforeSend : function() {
        //waiting message
        $('#some_information_div').html('<strong>Updating...</strong>');
    }
}).done(function(data) {
        //new data comes here (by JSON, plain text, whatever...)
        if (data.status == 'OK') {
            //OHHH MAN WE HAVE TO POPULATE MANUALLY IT AGAIN
            var c = '';
            c = '<table>'

            data.content.forEach(function(e) {
                c += '<tr><td>' + e.name + '</td></tr>';
            });

            c += '</table>'

            //update with new values
            $('#some_information_div').html('');
            $('#destination_table').html(c);
        }
});

不幸的是,我必须一直使用我的列表和表格,不知何故,我必须重新输入代码并通过javascript操纵它们。我发现有些东西可能像jQuery.load()一样有用,也许它可以适合我想要的东西,我没有尝试过。

其他一些语言和框架(如JSF)使用“渲染技术”轻松完成,您可以直接更新内容,而无需手动创建和操作DOM。

请提出任何建议,这种方法的任何线索都会非常有用。

P.S。:代码示例代码在这里效果不佳。

1 个答案:

答案 0 :(得分:3)

这可以通过使用.load() jquery函数来完成。我已经说明了一些页面1.php和一些有id mytable的表格

$('table#mytable').load('./1.php #mytable');

持续刷新 -

setInterval(function() {
$('tablev#mytable').load('./1.php #mytable');
}, 5000);