题
我已经编码了一个PHP脚本,该脚本用于检查几个不同的服务器的状态,确定它们是否在线,然后输出其版本信息,并给出以更新服务器上数据库的选项。
我遇到的问题是,当脚本到达离线服务器时,它会在执行检查时悬挂很长时间。我认为这是一个很好的方法,可能是使用jQuery或Xajax之类的东西异步加载不同的服务器,以便一台服务器不会悬挂整个脚本。
我调用单个功能以开始所有检查,并回应服务器信息:
outputServerInfo("addressOfServerHere", "nameofServerHere", array("Names", "of", "databases");
我的问题是:什么是对这些服务器异步加载这些服务器的最佳方法?如果我可以在执行支票时说出“加载...”代替,那将是理想的。我以前从未使用过jQuery或Xajax,所以我认为最好获得一些社区的输入。谢谢!
编辑:我现在已经工作并加载了所有服务器,但是我还有另一个问题。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
document.write("<h1>Server Manager</h1><form method='post' name='form1'>");
function server_output(serverName) {
document.write("<div id=" + serverName + "Loading>Loading " + serverName + "...</div>");
$.ajax({
url : 'serverManager.php',
async: true,
type : 'POST',
data : 'serverName=' + serverName,
success : function(msg){
document.write("<div id=" + serverName + "Loading>");
document.write(msg);
document.write("</div>");
}
});
}
server_output("serverName");
</script>
<input type='SUBMIT' value='GO' name='btnGo' onSubmit=document.form1.submit(); />
<input type='HIDDEN' name='ACTION' value='GO' />
当我加载页面时,我可以看到服务器管理器标题以及最后一个标签后的按钮,但是它们几乎立即消失。在此之后,服务器信息加载了,它们不会重新出现,因此我没有标题以及让我使用我的表单的按钮(我的PHP脚本创建了用于提交作业的复选框,用于更新服务器) 。有任何想法吗?
解决方案
好吧,对于jQuery来说,就像调用后端PHP脚本一样容易。
$.ajax({
type : 'POST',
url : 'your_script.php',
async : true, //default anyway
data : '', //server ip, or something to send to the script using type as the method
success : function(msg){
//do something here with returned data
//Example: alert(msg) will show the output results from the backend script
}
});
其他提示
您正在使用Ajax发布,但是您正在检查$ _GET-认为您可能想要$ _post。
您可以从客户端拨打所有电话 jQuery ajax函数. 。因此,您可以异步地调用所有呼叫。
JQuery和Ajax绝对是必经之路。 jQuery Ajax是异步的,因此您可以一次踢出很多工作。您将为您试图获取更新的每台服务器的AJAX作业。
默认情况下,您可以为每个服务器提供一个带有“加载”内容的DIV。一旦您从Ajax调用获得了成功的响应,您将将DIV的值更改为要显示的信息。即使是故障也会返回Ajax的结果,因此您可以捕获错误并显示不同的消息。