我的模型中有几种方法,由我的控制器调用。在客户端上,我想在模型方法运行时更新进度条。
如何与控制器通信以获得进展?
答案 0 :(得分:4)
确实,您需要使用AJAX / long轮询来完成这项工作。这是XMLHttpRequest2。对我来说,这已经将网络带到了新的水平。是时候让我们使用它了。我用它与jquery。可能更容易理解我所做的事情。可能需要一些调整才能使其正常工作。这就是..
$.ajax({
type: 'POST/GET',
url: "link/to/controller/method",
data: {whatever = 'foo'},
beforeSend: function(XMLHttpRequest)
{
//Upload progress
XMLHttpRequest.upload.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
$( ".jquery-uploadbar-selector" ).progressbar({ value: percentComplete }); //jquery progress bar for upload
//incase you wanted an upload bar
}
}, false);
//Download progress
XMLHttpRequest.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
$( ".jquery-downloadbar-selector" ).progressbar({ value: percentComplete });
//jquery progress bar for download or in other words The real answer for question
}
}, false);
},
success: function(data){
//Here goes the end of what you have done.. I would just type..
console.log('Yay!! I guess, I ve answered my first bounty question and hoping to see it work well.');
}
});
希望它有效..如果我错了,请告诉我。
答案 1 :(得分:1)
你不能使用PHP,因为PHP是服务器端,当它完成工作后,结果会被发送到浏览器。
您可以使用Javascript进行AJAX调用(google this,这是一种在不重新加载页面的情况下调用服务器的方法),每次完成模型的方法时,您可以将“加载”添加到进度条使用JS。但实际上在PHP中,没有办法知道已经完成了多少动作
答案 2 :(得分:0)
有很多方法可以通过Apache和NGINX上传文件,但这不适用于您的情况。
这样做的一种方法是使用AJAX长轮询来监视控制器的特殊控制器或方法,以便在它发生变化时查找更新并在前端进行更新。
答案 3 :(得分:0)
<div class="overlay" style="display:none;"></div>
和css
.overlay {width:100%;高度:100%;的z-index:5000; left:0; / IE / top:0; 文本对齐:中心;位置是:固定; background:url('https://memberschemes.rics.org/MembersPortal/images/ajax_loader-2.gif')no-repeat固定中心; background-color:#EFEFEF; 不透明度:0.7; / * 背景:#F4F4F4; background-repeat:no-repeat; 背景位置:中心; * / }