尝试将“div”作为动态内容加载

时间:2013-08-08 23:37:31

标签: php javascript jquery ajax asynchronous

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

看起来像这样:

service status screen capture

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

这是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

1 个答案:

答案 0 :(得分:2)

这是一个如何动态地向DOM元素添加内容的简单示例。您可以使用$ .ajax

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

网址:将指向您的文件。

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

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

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

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

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