Задержка рендеринга жидкой страницы до тех пор, пока Ajax не вернет данные - PullRequest
0 голосов
/ 22 мая 2018

Я использую Liquid и имею доступ как на стороне сервера, так и на стороне клиента.Я хочу получить местоположение пользователей один раз, а затем в соответствии с местоположением пользователей визуализировать различные жидкие элементы.Так что скрывать div не получится.Мне действительно нужно отложить рендеринг, возможно, на полсекунды, пока код страны не будет возвращен через Ajax.Тогда я могу взять это оттуда.Я попробовал это, но не повезло, это не задерживает рендеринг страницы, просто задерживает запись моего сообщения на консоль.

<script>
   $(window).load(function () {
      setTimeout(function(){ console.log("waiting 2 secs..");
        },2000); // set the time here
    });

  jQuery.ajax( {
    url: '//freegeoip.net/json/',
    type: 'POST',
    dataType: 'jsonp',
    success: function(location) {
      {% assign user_country = location.country_code %}
      console.log("Hey this is the country code " + location.country_code);
    }
  });
</script>

1 Ответ

0 голосов
/ 22 мая 2018

Не следует использовать jsonp, так как это не лучшая практика.

Как указывает Сэм, вы можете использовать done():

jQuery.ajax({
    url: '//freegeoip.net/json/',
    type: 'POST',
    async: false,
    success: function(location) {
      {% assign user_country = location.country_code %}
      console.log("Hey this is the country code " + location.country_code);
    }
}).done(function() {
  // CODE HERE WILL ONLY RUN ONCE AJAX REQUEST IS COMPLETED
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...