Javascript jquery进度条设置超时

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){

我想在提出ajax请求时添加一个进度条,进度条的值由setTimeout更改。但是当我继续发送请求时,值的变化会越来越快。下面是我的代码,有人知道如何清除设置在ajaxStart部分的ajaxStop中的超时吗?如何清除所有超时

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”)。