Javascript jquery进度条设置超时
我想在提出ajax请求时添加一个进度条,进度条的值由setTimeout更改。但是当我继续发送请求时,值的变化会越来越快。下面是我的代码,有人知道如何清除设置在ajaxStart部分的ajaxStop中的超时吗?如何清除所有超时Javascript jquery进度条设置超时,javascript,jquery,ajax,Javascript,Jquery,Ajax,我想在提出ajax请求时添加一个进度条,进度条的值由setTimeout更改。但是当我继续发送请求时,值的变化会越来越快。下面是我的代码,有人知道如何清除设置在ajaxStart部分的ajaxStop中的超时吗?如何清除所有超时 var $reportContent = $("#reportDataDiasplay"); var timeOut; $(document).ajaxStart(function(){ if($(".ui-dialog").length==0){
var $reportContent = $("#reportDataDiasplay");
var timeOut;
$(document).ajaxStart(function(){
if($(".ui-dialog").length==0){
$reportContent.append("<div id='progressBarDialog'><div id='progressbar'></div></div>");
var $progressbarDialog = $("#progressBarDialog");
$progressbarDialog.dialog({
modal: true,
width:175,
height:50,
closeOnEscape: false,
autoOpen: false
});
$(".ui-dialog-titlebar").hide();
}
var $progressbar = $( "#progressBarDialog #progressbar" );
$progressbar.progressbar({value:false});
$progressbar.progressbar( "value",0 );
function progress() {
clearTimeout(timeOut);
var val = $progressbar.progressbar( "value" ) || 0;
if ( val < 75 ) {
$progressbar.progressbar( "value", val + Math.random() * 25 );
}
if(val < 99){
timeOut = setTimeout( progress, 300 );
}
}
timeOut = setTimeout( progress, 300 );
$("#progressBarDialog").dialog("open");
});
$(document).ajaxStop(function(){
$("#progressBarDialog").dialog('close');
});
var$reportContent=$(“#reportdataplay”);
var超时;
$(文档).ajaxStart(函数(){
如果($(“.ui对话框”).length==0){
$reportContent.append(“”);
变量$progressbarDialog=$(“#progressbarDialog”);
$progressbarDialog.dialog({
莫代尔:是的,
宽度:175,
身高:50,
closeOnEscape:错误,
自动打开:错误
});
$(“.ui对话框标题栏”).hide();
}
变量$progressbar=$(“#progressBarDialog#progressbar”);
$progressbar.progressbar({value:false});
$progressbar.progressbar(“值”,0);
功能进展(){
clearTimeout(超时);
var val=$progressbar.progressbar(“值”)|| 0;
如果(val<75){
$progressbar.progressbar(“值”,val+Math.random()*25);
}
如果(val<99){
超时=设置超时(进度,300);
}
}
超时=设置超时(进度,300);
$(“#progressBarDialog”)。对话框(“打开”);
});
$(文档).ajaxStop(函数(){
$(“#progressBarDialog”).dialog('close');
});
如果您询问如何清除超时,那么您所要做的就是使用clearTimeout()代码>
将您的setTimeout()
分配给一个变量(您已经拥有),例如
然后,当您想要清除它时,使用clearTimeout(timeOut)代码>
要知道超时正在运行,以便知道是否要设置新的超时,只要在使用setTimeout()时为变量赋值即可;每当清除超时或超时结束时,将该值设置为false。然后,如果该值为false,则仅启动一个新的setTimeout()。如果您询问如何清除超时,则只需使用clearTimeout()代码>
将您的setTimeout()
分配给一个变量(您已经拥有),例如
然后,当您想要清除它时,使用clearTimeout(timeOut)代码>
要知道超时正在运行,以便知道是否要设置新的超时,只要在使用setTimeout()时为变量赋值即可;每当清除超时或超时结束时,将该值设置为false。然后,如果该值为false,则只启动一个新的setTimeout()。我已经找到了该点,我应该将超时部分放入初始部分(新建对话框)。因为如果在startAjax部分中引发新的超时,那么每次发送ajax请求时都会引发新的超时,这些循环一起工作,因此进度条的变化越来越快<代码>清除超时(超时)代码>不工作,因为将新引发一个新的进度函数。下面是我修改后的代码。也许对你有帮助~~
顺便说一句,有人能给我投票吗?我想加入聊天部分,但它需要20分的声誉~~
$(document).ajaxStart(function(){
if($(".ui-dialog").length==0){
$reportContent.append("<div id='progressBarDialog'><div id='progressbar'></div></div>");
$( "#progressBarDialog #progressbar" ).progressbar({value:false});
var $progressbarDialog = $("#progressBarDialog");
$progressbarDialog.dialog({
modal: true,
width:175,
height:50,
closeOnEscape: false,
autoOpen: false
});
$(".ui-dialog-titlebar").hide();
function progress() {
var val = $progressbar.progressbar( "value" ) || 0;
if ( val < 80 ) {
$progressbar.progressbar( "value", val + Math.random() * 15 );
timeOut = setTimeout( progress, 500 );
}
}
setTimeout( progress, 500 );
}
var $progressbar = $( "#progressBarDialog #progressbar" );
$progressbar.progressbar( "value",0 );
$("#progressBarDialog").dialog("open");
});
$(document).ajaxStop(function(){
$( "#progressBarDialog #progressbar" ).progressbar( "value",0 );
$("#progressBarDialog").dialog('close');
});
$(文档).ajaxStart(函数(){
如果($(“.ui对话框”).length==0){
$reportContent.append(“”);
$(“#progressBarDialog#progressbar”).progressbar({value:false});
变量$progressbarDialog=$(“#progressbarDialog”);
$progressbarDialog.dialog({
莫代尔:是的,
宽度:175,
身高:50,
closeOnEscape:错误,
自动打开:错误
});
$(“.ui对话框标题栏”).hide();
功能进展(){
var val=$progressbar.progressbar(“值”)|| 0;
如果(val<80){
$progressbar.progressbar(“value”,val+Math.random()*15);
超时=设置超时(进度,500);
}
}
设置超时(进度,500);
}
变量$progressbar=$(“#progressBarDialog#progressbar”);
$progressbar.progressbar(“值”,0);
$(“#progressBarDialog”)。对话框(“打开”);
});
$(文档).ajaxStop(函数(){
$(“#progressBarDialog#progressbar”).progressbar(“值”,0);
$(“#progressBarDialog”).dialog('close');
});
我已经找到了要点,我应该将超时部分放在初始部分(新对话框)。因为如果在startAjax部分中引发新的超时,那么每次发送ajax请求时都会引发新的超时,这些循环一起工作,因此进度条的变化越来越快<代码>清除超时(超时)代码>不工作,因为将新引发一个新的进度函数。下面是我修改后的代码。也许对你有帮助~~
顺便说一句,有人能给我投票吗?我想加入聊天部分,但它需要20分的声誉~~
$(document).ajaxStart(function(){
if($(".ui-dialog").length==0){
$reportContent.append("<div id='progressBarDialog'><div id='progressbar'></div></div>");
$( "#progressBarDialog #progressbar" ).progressbar({value:false});
var $progressbarDialog = $("#progressBarDialog");
$progressbarDialog.dialog({
modal: true,
width:175,
height:50,
closeOnEscape: false,
autoOpen: false
});
$(".ui-dialog-titlebar").hide();
function progress() {
var val = $progressbar.progressbar( "value" ) || 0;
if ( val < 80 ) {
$progressbar.progressbar( "value", val + Math.random() * 15 );
timeOut = setTimeout( progress, 500 );
}
}
setTimeout( progress, 500 );
}
var $progressbar = $( "#progressBarDialog #progressbar" );
$progressbar.progressbar( "value",0 );
$("#progressBarDialog").dialog("open");
});
$(document).ajaxStop(function(){
$( "#progressBarDialog #progressbar" ).progressbar( "value",0 );
$("#progressBarDialog").dialog('close');
});
$(文档).ajaxStart(函数(){
如果($(“.ui对话框”).length==0){
$reportContent.append(“”);
$(“#progressBarDialog#progressbar”).progressbar({value:false});
变量$progressbarDialog=$(“#progressbarDialog”);
$progressbarDialog.dialog({
莫代尔:是的,
宽度:175,
身高:50,
closeOnEscape:错误,
自动打开:错误
});
$(“.ui对话框标题栏”).hide();
功能进展(){
var val=$progressbar.progressbar(“值”)|| 0;
如果(val<80){
$progressbar.progressbar(“value”,val+Math.random()*15);
超时=设置超时(进度,500);
}
}
设置超时(进度,500);
}
变量$progressbar=$(“#progressBarDialog#progressbar”);
$progressbar.progressbar(“值”,0);
$(“#progressBarDialog”)。对话框(“打开”);
});
$(文档).ajaxStop(函数(){
$(“#progressBarDialog#progressbar”)。