延迟液体页面渲染,直到Ajax返回数据

时间:2018-05-22 17:54:45

标签: javascript jquery liquid

我正在使用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 :(得分:0)

您不应该使用jsonp,因为这不是最佳做法。

Sam指出,您可以使用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
});