2014-09-19 2 views
-1

Я пользуюсь функцией App.loadTo, чтобы загрузить некоторые данные в любом месте. Мне нужно задержка перед отображением какого-либо контента (используется плагин Form-styler, форма перерисовки). Я попытался SetTimeout и setInterval функции, но они работают только один раз, т.е.setTimeOut/setInterval работает только один раз

1) Вызывается App.loadTo (PARAMS) - задержка работы

2) Вызывается App.loadTo (PARAMS) с теми же Params - задержка Doesnt работа

Я попытался следующие без успеха

  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

+0

setInterval тоже – user2455668

+0

OP означает: когда функция называется второй раз, интервал не срабатывает. Логическая проблема. –

ответ

0

Попробуйте очистить setTimeout с помощью clearTimeout(); если вы решите пойти с этим, иначе, если же вы хотите попробовать setinterval метод, попробуйте очистить его вне себя, я надеюсь, что это помогает

0

Я создал небольшую скрипку, усеченную код ... http://jsfiddle.net/gnsnvjtz/

большая разница здесь заключается в следующем:

var App = { 

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

} 

вместо `App.loadTo = функция loadTo (Params) ...

Смежные вопросы