【问题标题】:Ping a server + progress bar then display a different divPing 服务器 + 进度条然后显示不同的 div
【发布时间】:2013-08-19 04:06:26
【问题描述】:

所以基本上我使用的是 Bootstrap 3 RC2。我希望能够通过 PHP ping 服务器。我在谷歌上找到了这个脚本。

<?php
// Script by Akensai

if (!$socket = @fsockopen("YOUR.IP.HERE", 80, $errno, $errstr, 30))
{
  echo "<font color='red'><strong>Offline!</strong></font>";
}
else 
{
  echo "<font color='green'><strong>Online!/strong></font>";


  fclose($socket);
}

?>

我知道我可以将在线/离线回显更改为引导元素,例如 100% 进度条。

我想知道的是如何在 ping 服务器时使进度条从 0%-100% 变为 0%-100%。默认情况下,加载时进度条为蓝色,成功则变为绿色,失败则变为红色。 Bootstrap 只需更改进度条 DIV 中的类即可提供这些选项。

我知道这似乎不切实际,因为 ping 通常非常快,但我仍然想知道如何使用该功能以供将来参考。

有什么建议吗?

【问题讨论】:

  • 你需要使用ajax来ping然后

标签: php jquery css twitter-bootstrap ping


【解决方案1】:

我将向您展示它是如何仅使用 jquery 完成的,我没有使用太多引导程序。

首先让我们假设我们有与您所做的类似的服务器代码。

$json = array();
if ($socket = fsockopen($_POST['ip'], 80, $errno, $errstr, 30)) {
   $json = array('status' => 1);
   fclose($socket);
} else {
   $json = array('status' => 0);
}

header("Content-Type: application/json");
echo json_encode($json);

我们有一个服务器脚本,我们可以从客户端调用它,它会返回一个 json 响应。

在 html 端,我们有以下进度条。

<progress id='progress' max=100></progress>

然后我们有以下 jquery 代码调用我们的脚本

$(function () {
    var options = {
         url: '/script.php',
         data: { ip : '127.0.0.1' },
         type: 'POST',
        dataType: 'json',
        success: function (json) {
           if (json.status  == 1) $("#progress").val($('#progress').val() + 10);
        }
    };
    $.ajax(options);
});

您需要使用setInterval 或其他排队方法进行此 ajax 调用,以便在 ping 完成之前执行 ping 操作。 请注意,我从您的fsockopen 中删除了@,这是一种不好的做法。 Read

【讨论】:

  • 我讨厌不得不这样说,并且对于一个熟悉语言的人来说是无知的。我不明白你写的任何内容,意思是..我把代码放在哪里,我把代码保存在哪里。我知道这不是要求用勺子喂食的地方,我知道。就像我说的那样,我讨厌我这么说,因为我很确定这会让你和其他阅读这篇文章的人更加恼火,但我不知道 json/js/php 是如何工作的。我目前只知道 HTML 和 CSS。我很快就要接受 PHP 培训了。在那之前,我必须依靠人们“用勺子喂”我才能与我的想法相处。
  • @AshleyBrown 我清楚地说明了哪个是 php,哪个是客户端 :)
  • 那么对于 HTML,标记是 &lt;div class="progress"&gt; &lt;div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 40%"&gt; &lt;/div&gt; 唯一需要更改完成百分比的就是将 style="width:40%" 更改为需要的完成百分比。但作为旁注,进度标记与您假设的不同,所以..是的,我在这里到处都是..可以通过电子邮件或Skype或其他方式帮助我吗?非常感谢您迄今为止对我的帮助。
  • @DevZerO 我向你发了推文并关注了你,因为你没有关注我,所以我无法私信你。
猜你喜欢
  • 1970-01-01
  • 2020-09-18
  • 1970-01-01
  • 1970-01-01
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
相关资源
最近更新 更多