有一个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结果! 这不好。
有可能解决这个问题吗?
答案 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?