2014-09-19 184 views
-1

我使用函数App.loadTo在任何地方加载一些数据。在显示任何内容之前,我需要延迟(使用form-styler插件,重绘表单)。我试图setTimeout和setInterval的功能,但它们只运行一次,即调用App.loadTosetTimeOut/setInterval只运行一次

1)(PARAMS) - 延迟工作

2)具有相同PARAMS调用App.loadTo(PARAMS) - 延迟犯规工作

我试图

  tmp = setInterval(function() { 
       console.log('I show all invisible!', params.where); 
       $(params.where).css({ 
        'visibility': 'visible' 
       }); 
       $('#preloader').remove(); 
       clearInterval(tmp); 
      }, 110); 

哪里我犯了一个错误,但没有成功以下?

App.loadTo = function loadTo(params) { 
    $.ajax({ 
     url: '/' + params.controller + '/' + params.action + '', 
     type: 'POST', 
     dataType: 'json', 
     data: params.sentData, 
     success: function(server_answer, textStatus) { 
      if (server_answer.result == 'success') { 
       if (params.hasOwnProperty('parseHtml')) { 
        // Data parsing 
        var html = $(server_answer.html); 
        html = $(html).find(params.parseBlock); 
       } else { 
        var html = $(server_answer.html); 
       } 

       // Inserting data 
       $(params.where).empty().html(html).css({ 
        'visibility': 'hidden' 
       }).before('<div id="preloader" style="width: 100%; background: url(&quot;i/preloader.gif&quot;) no-repeat scroll 50% center transparent; min-height: 140px; height: 100%;"></div>'); 

       // Delay before display 
       setTimeout(function() { 
        console.log('I show all invisible!', params.where); 
        $(params.where).css({ 
         'visibility': 'visible' 
        }); 
        $('#preloader').remove(); 
       }, 110); 
      } else { 
       alert_jq_ui(server_answer.error_txt); 
      } 
     }, 
     error: function(xhr, errmsg, err) { 
      alert_jq_ui(xhr, errmsg, err); 
     } 
    }); 
}; 
+0

'的setTimeout()'运行一次。 – PHPglue 2014-09-19 21:01:49

+0

setInterval too – user2455668 2014-09-19 21:04:06

+0

OP表示:当第二次调用函数时,间隔不会触发。逻辑问题,但。 – 2014-09-19 21:06:18

回答

0

尝试使用clearTimeout()清除setTimeout;如果你选择去与,否则如果你比较想尝试setInterval的方法,尝试清除它的本身之外,我希望这有助于

0

我创建了一个小小提琴,剥夺了你的代码... http://jsfiddle.net/gnsnvjtz/

最大的区别就在这里是这样的:

var App = { 

    loadTo: function() { 
     ///loadTo code goes here ... 
    } 

} 

,而不是`App.loadTo =功能loadTo(PARAMS)...