我正在研究一种方法,我可以毫不费力地将一个 php 程序的多个实例更新到相同的版本。
我的软件检查 RSS 提要,其中包括有关最新版本的信息。如果它看到有可用的更新,它会显示一个指向“更新”页面的链接。当用户单击更新链接时,我有一个 jquery 函数,可以一次更新每个需要更新的文件:
$.getJSON('http://softwareserver.com/updateFileList.php?fromver=1.0', function(data) {
var filesToDo = data.length;
$.each(data, function(num, file) {
num = num + 1;
action = file.charAt(0);
name = file.substring(1);
if ( action == "+" )
{
$('#upsole').append("<p><strong>Adding</strong> " + name + ". . .</p>");
$.get("{$var['sbpurl']}/updateAction.php", { action: "add", file: name, revision: "{$TMP['rev']}" } );
}
else if ( action == "-" )
{
$('#upsole').append("<p><strong>Removing</strong> " + name + ". . .</p>");
$.get("{$var['sbpurl']}/updateAction.php", { action: "remove", file: name, revision: "{$TMP['rev']}" } );
}
else if ( action == "~" )
{
$('#upsole').append("<p><strong>Updating</strong> " + name + ". . .</p>");
$.get("{$var['sbpurl']}/updateAction.php", { action: "update", file: name, revision: "{$TMP['rev']}", version: "{$TMP['ver']}" } );
}
var completed = num / filesToDo * 100;
$('#barcolor').css('width', completed + '%');
$('#numProgress').html(completed.toFixed(0));
if ( completed == 100 )
{
$('#conutt').html('<a href="index.php" class="button"> Continue > </a>');
$('#upsole').append("<p><strong>Update Complete</strong></p>");
}
});
});
我在 div 容器中显示每个文件名,因为它正在更新;我还有一个进度条,随着每个文件的更新,直到所有文件都被更新,它的进度条从 0-100% 变为 0-100%。但是当它全部完成时,它只是从 0 变为 100。它实际上并没有显示进度,因为每个文件都像我想要的那样更新。
我希望我的进度条从 0% 变为 7%、15% 等,直到达到 100%,但在全部完成之前什么都没有发生。正如我所说,它只是从 0% 变为 100%。
$.each 不是最好的解决方案吗?