在jQuery对话框中显示PHP输出。

时间:2014-04-09 11:54:53

标签: javascript php jquery

有一个ping.php文件,它本身很好用:

Ping给定主机,并在网页上逐行显示ping结果。

但是我想在jQuery对话框中显示ping结果,

同样,row_by_row。

这是jQuery代码:

  $(function() {
    var tag = $("<div></div>");
    $("#button").on('click', function() {
      $.ajax({
        url: "/modules/ping.php?host=172.16.1.1",
        success: function(data) {
          tag.html(data).dialog({title: 'Ping', modal: false}).dialog('open');
        }
      });
    });
  });

但是在这种情况下,当ping.php时,对话框才会出现(并显示结果) 完成了运行,我没有逐行看到ping结果! 这不好。

有可能解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我假设ping.php之前已包含在iframe中或直接访问过?这是有效的,因为PHP会在每次ping和将数据发送到您的计算机后将其输出到浏览器。浏览器在下载这些结果时与服务器保持连接。

但请注意,在使用ajax时,您使用的是success回调,该回调会在页面加载完毕时触发,这与您的php脚本的工作方式不兼容。

您将不得不考虑更复杂的解决方案,例如为每个ping调用PHP的javascript(因此它可以显示进度),或依赖于websockets将更新推送到浏览器的东西

更多细节可以在以下问题中找到:What is the best way of showing progress on an Ajax call?