使用ajax重新加载页面的一部分

芬斯塔

我正在使用 express 来显示正在运行的进程列表。我希望他们每隔几秒钟重新加载一次以删除那些已完成的并添加新的。

我为此使用ajax:

我的 layout.pug(已删节)

div(class="processes")
    for process in processes
         div(class="process")=process.name

  script.
    setInterval(() => {
      $.ajax({
        url: "/processes/running",
        type: "GET",
        success: function(response, status, http) {
          if (response) {
              processes = $('.processes')[0]
              html = ""
              for(process of response){
                html +='<div class="process">'+process.name+'</div>'
              }
              $(processes).html(html)
          }
        }
      });
    }, 3000)

而相应的路线就是

app.get('/processes/running', function(req, res){
    res.send(processes)
})

processes我用来跟踪它们的数组在哪里

这工作正常。但是,我不喜欢代码重复。我基本上必须在我的代码中两次构建列表/表。如果我改变了什么,我将不得不在两个地方都改变它......

那么,有没有更好的方法来实现这一点?

卡里布德BE

避免重复的解决方案就是不初始化你的 div 内部

div(class="processes")


  script.
    setInterval(() => {
      $.ajax({
        url: "/processes/running",
        type: "GET",
        success: function(response, status, http) {
          if (response) {
              processes = $('.processes')[0]
              html = ""
              for(process of response){
                html +='<div class="process">'+process.name+'</div>'
              }
              $(processes).html(html)
          }
        }
      });
    }, 3000)

div 将在第一次调用后填充。

如果您已经有数据,您可以将“html 创建部分”(if(response)块)放在一个函数中,并在调用 setInterval 之前调用它,并像现在一样在响应中调用它。这将允许您在一个地方拥有定义数组的代码

如果您还没有数据,我建议在 div 中显示一条消息,例如“尚无数据,请稍候”

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在ajax请求后仅重新加载页面的一部分

AJAX / PHP重新加载页面的一部分

单击按钮即可重新加载页面的一部分,使用新URL刷新整个页面

在 Ajax 中加载页面的一部分,而不是整个页面

我需要使用Ajax动态更改页面的一部分

角路由,是整个HTML页面重新加载,还是只是页面的一部分?

裁剪页面的一部分

更新 .php 页面的一部分

打印页面的一部分javascript

我正在尝试使用 AJAX 将已经呈现的 Django 模板注入我的页面的一部分

仅重新加载iframe的一部分

Ajax请求仅在第一次加载时有效,而在加载页面的一部分后不再起作用

使用Paw提取登录页面后面的URL的一部分

使用setInterval()刷新我的php页面的一部分

使用Laravel单击<a>元素仅更改页面的一部分?

安卓。Webview。使用Javascript显示页面的一部分

使用 Django 仅更新 HTML 页面的一部分

如何使用AnyEvent :: HTTP仅获取页面的一部分?

如何使用jQuery刷新页面的一部分

尽管使用了Selenium WebDriver,但只解析了页面的一部分

使用jQuery通过URL中的哈希显示页面的一部分

php 使用 get 值的问题。适用于页面的一部分但不适用于另一部分

如何确定页面的哪一部分应该优先加载第一?

尝试通过控制器加载带有 # 标签的页面的一部分

在 Razor Pages 上不显眼的 ajax 帖子后更新页面的一部分

是否可以使ASP.NET页面使用不同的DOCTYPE呈现页面的一部分?

如何在aspx页面的一部分中打开HTML页面

更改html页面的一部分而不刷新整个页面

mmap是分配页面还是页面的一部分?