使jQuery / AJAX在页面加载时立即执行

时间:2015-06-07 20:27:28

标签: javascript php jquery ajax

是否可以立即从AJAX加载内容?

例如,在加载时我使用$.getJSON

$(function(){
  $.getJSON('posts.php',function(data){
    data.posts.forEach(function(post){
       // load info, append divs
    })
  })
 })

然而,有一点延迟(可能是1秒),其中divs没有附加在页面加载上。只有使用PHP on-load

才能实现这一点

2 个答案:

答案 0 :(得分:0)

这更像是一个用户体验问题。你能做的就是让它感知到#34;瞬间。例如,它是否有Ajax加载器?准备好后你能淡出内容吗?你可以做很多技巧来实现它"即时"。我同意,你不能随意将内容弹出到页面中。这可能吓到人们。

答案 1 :(得分:0)

Ajax调用的速度是Ajax调用的速度。这是对服务器的往返,所以一旦你在服务器上进行了那么快的往返,就没有别的办法了,因为剩下的只是服务器和客户端浏览器之间传输的速度。所以,总会有某种延迟。

你可以做一些事情来解决这个问题:

  1. 您可以立即在<head>标记中发送ajax调用,而不是等待页面加载。结果返回时,您只需存储结果。然后,当页面加载完成后,立即插入结果。

  2. 您可以隐藏主要内容,运行ajax调用,插入ajax结果,然后显示您的内容。这将使它全部“出现”在屏幕上。

  3. 第一个选项如下:

    <head>
      <script src="jquery.min.js"></script>
      <script>
      $.when($.getJSON('posts.php'), jQuery.ready).then(function(result) {
          // result[0] is the result from the getJSON call
          // and the DOM is ready so you can insert the content here
      });
      </script>
    </head>
    

    这会在页面开始加载时立即启动ajax调用,以便尽快启动它。然后,当完成ajax调用并且DOM准备就绪时,您可以插入内容。