我想在 ajax 请求触发和完成时使用 jquery ui 进度条显示进度。问题是我不知道如何根据ajax请求的进度设置进度条的值。下面是一段代码:
function ajaxnews()
{
$('.newstabs a').click(function(e){
var section = $(this).attr('id');
var url = base + 'news/section/' + section;
$.ajax({
url : url,
dataTye : 'html',
start : loadNews,
success : fillNews
});
});
}
// start callback functions
function loadNews()
{
$('#progressbar').fadeIn();
$('#progressbar').progressbar({ //how shoud I set the values here});
}
function fillNews()
{
$('#progressbar').progressbar('option', 'value', ?? /* how do I find this?*/);
$('#progressbar').fadeOut();
}
根本问题是您不知道请求需要多长时间。
对于进度条,您需要设置百分比或已完成的步骤数。
如果您不希望进度条只是从 0 跳到 100,则需要有某种方法来在请求完成之前测量完成率。
如果您能猜出需要多长时间,您可以使用计时器让它自动递增到 90%,当服务器响应到达时,将其设置为 100%。当然,这有点假装了。
如果您有多个请求,您可以使用已完成请求数的百分比形式。如果有意义,您可以将单个请求分解为多个请求,但请仔细考虑这对网络流量和响应时间的影响。不要只是为了进度条而这样做。
如果请求确实需要很长时间,您可以向服务器发出额外的请求来查询进度。但这可能意味着服务器端需要做大量工作。
抱歉,但是进度条很难...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)