【问题标题】:Attempting to load a "div" as dynamic content is returned尝试在返回动态内容时加载“div”
【发布时间】:2023-04-10 19:44:01
【问题描述】:

我有一个 PHP 程序,它执行一系列密钥驱动的 SSH 连接(作为 Apache 用户 www-data),并在远程服务器上执行脚本来检查几个服务/守护程序的状态。根据报告的状态“正在运行”或“已停止”,函数确定应在 div 表格单元格中显示的适当图像、绿色对勾或红色“x”。

看起来像这样:

问题是轮询了 9 个服务器,动态构建了 18 个 div 表格单元。当每个 SSH 调用返回数据时,我想刷新/显示每个 div。

这是 PHP 代码,其中每个 SSH 调用都会插入包含结果的 div:

           $cmd_string=buildServiceCallString($distIP, "VolCreationService","serviceCheck");

            echo "<div class=\"statTableRow\">";
        echo "<div class=\"statData statTableCell\">";
            $cmd_output=shell_exec($cmd_string);
            echo "<span class=\"serviceTitle\">VolCreationService: <img class=\"runStatImage\" src=\"".displayRunStatusImage($cmd_output)."\"></span>";
            $cmd_output="";
                   echo "</div>"; //end statTableCell
                   echo "</div>"; //end statTableRow

我已经努力了解 jQuery .load() 方法,但它还没有点击。我想这将涉及回调,但我不明白如何通过异步调用访问和显示元素。

非常感谢任何建议!

-TU

【问题讨论】:

    标签: php javascript jquery ajax asynchronous


    【解决方案1】:

    这是一个非常简单的例子,说明如何动态地向 DOM 元素添加内容。你可以使用 $.ajax

     var request = $.ajax({
          type: "POST",
          url: "example.php",
          data: data_obj,
          dataType: "html"
       }).done(function(msg) {
             $("#example_element").append(msg);
          }
    

    url: 将指向您的文件。

    data: 是可选的,但使用该选项将允许您将要检索的密钥传递回去。

    dataType:指定你期望的返回类型

    在 .done 中,您可以做的加载内容的最简单的事情就是将其附加到某些东西(或替换,但在您的情况下您可能想要附加它)。

    请注意,此调用不检查错误情况。

    The documentation is pretty verbose but you should still read it if you plan on using AJAX calls.

    【讨论】:

    • 我仍然完全迷失在这里......似乎在加载所有内容后执行脚本。我是在错误地接近这个吗?我想逐个单元格地加载页面,因为信息是从 ssh 调用返回的...
    • 假设您有一个名为 example_element 的 div。此调用将执行的操作是转到名为 example.php 的 php 文件并期望返回值为 html。一旦 AJAX 调用完成,调用的 .done 部分将附加任何返回的 html 值 example.php 到名为 example_element 的 div 元素。
    • 每次 ssh 调用完成后,你的 php 脚本是否返回它的数据?
    • 感谢一百万!我无法让 $.ajax 调用表现得像我想要的那样。它处于循环中,需要进行多次调用。我只能得到一个回应。我想这是我的学习曲线,这阻碍了那个电话的成功。无论如何,我尝试了 .load() 方法,它允许我指定相同的参数,但发出多个请求并接收多个响应。我的脚本之前没有返回任何内容。您的提示指导我纠正了这一点,阅读文档帮助我更好地理解了一点。再次感谢。
    猜你喜欢
    • 2014-02-23
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    相关资源
    最近更新 更多