我正在编写一个 openvz 脚本来在家运行一些虚拟机。 不管怎样,我一直在研究一些js和ajax函数来发送post请求,所有这些都在innerHTML部分结束。 但是,当运行该命令时,该命令的结果将合并为一行结果,我想保留原始格式,因为某些 vzctl 命令会产生很长的输出。 我最初使用 PHP 进行此操作,并且该命令的实时结果将输出到 Web 浏览器中。 我想将结果保持在同一行,如果可能的话,让它像我的旧设置一样具有某种实时控制台提要。 这曾经有效,因为我只是使用 php,但现在我在 php 前面有 AJAX,它删除了格式。
CTID NPROC STATUS IP_ADDR HOSTNAME 101 21 running - -
上面是 vzlist 使用 ajax 运行时的示例输出,而底部没有,我该如何解决这个问题?
CTID NPROC STATUS IP_ADDR HOSTNAME
101 21 running - -
是否可以像使用 php 那样将 ajax 输出放入缓冲区?
<?php
$cmd = 'sudo '.$_POST["command"].' 2>&1';
while (@ ob_end_flush()); // end all output buffers if any
$proc = popen($cmd, 'r');
while (!feof($proc))
{
echo fread($proc, 4096);
@ flush();
}
?>
带有实时控制台的当前 PHP 文件。
function whoami () {
$.ajax({
url:"virt.php", //the page containing php script
type: "POST", //request type
data: "command=vzctl start 101",
success:function(result){
document.getElementById("test").innerHTML =(result);
}
});
}
function ls () {
$.ajax({
url:"virt.php", //the page containing php script
type: "POST", //request type
data: "command=vzlist",
success:function(result){
document.getElementById("test").innerHTML =(result);
}
});
}
使用 ajax 的当前 html。 抱歉,读得太长了,谢谢。
最佳答案
您可以在为 result
创建数据时尝试添加 html 和文件系统换行符。
生成它时,我假设在 php 中,您可以将以下内容放在您想要中断的位置之后。
"<br>\r\n"
您可能已经在生成换行符,如果是这样,您可以将输出包装在 nl2br()
中。这将创建 html <br>
元素代替换行符。请参阅nl2br .
关于javascript - 保留 ajax POST 格式/实时帖子提要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41515885/