【问题标题】:Make Ajax call after page load页面加载后进行 Ajax 调用
【发布时间】:2014-06-21 19:05:34
【问题描述】:

我们如何在页面加载后进行 ajax 调用。

假设文档加载 10 秒后,我需要进行 ajax 调用。

function loadajax(){
  $.ajax({ 
    url:'test',
    data:"username=test",
    type:"post",
    success:function(){
     //do action
    }
  });
}
 $('document').load(function(){
setTimeout(function(){
   loadajax();
 },10000);

});

我就是这样做的。但是没有成功。

【问题讨论】:

  • 为什么页面加载后 10 秒?听起来很奇怪
  • 不清楚你为什么要这样做,所以考虑一下这个可能适用于或可能不适用于你的具体情况的一般建议......最好立即发出 AJAX 请求,然后等待 10 秒对它做出反应,而不是等待 10 秒来拨打电话。这样,网络延迟不会增加超过 10 秒的等待时间。此外,您可以利用这段时间静默重试失败的请求。
  • 如何在完成一个 ajax 调用后进行此调用?
  • @Creator 把它放在success 回调中。但是,如果您对此有疑问,请将其作为单独的问题发布。

标签: jquery ajax timeout settimeout


【解决方案1】:

你可以试试这个:

$(document).bind("load", function() {
//code
 });

【讨论】:

    【解决方案2】:

    这么多答案,都略有不同,但在DOM 准备好 10 秒后运行函数的最短推荐 语法,同时仍保留最佳实践,将是:

    $(function(){
        setTimeout(loadajax,10000);
    });
    

    正如 Blazemonger 在下面提到的,您可以简单地将 setTimeout(loadajax,10000); 放在文档的末尾,但是更改起来不太灵活。 jQuery DOM 加载代码应始终在 jQuery DOM 加载事件中(即$(function(){...});

    【讨论】:

    • 事实上,最短的就是完全跳过$(function(){,将setTimeout放在页面末尾而不是<head>中。
    • @Blazemonger:是的,但这被认为是不好的做法,因为它不太灵活。始终最好将 jQuery DOM 就绪代码代码包装到 jQuery 加载中,以便可以在任何需要的地方包含/注入。我会稍微强调一下代码长度:)
    • @TrueBluePractice 在什么方面不够灵活?这是一种非常常见的技术——html5boilerplate.com 的人们已经这样做了多年。还有其他优点。见this questionthis one
    • @Blazemonger:您链接的示例是针对原始 Javascript 而不是 jQuery。 jQuery 的假设是你可能想在任何地方注入它而不用担心浏览器的顺序,因为它保证只有在 DOM 完全加载时才会触发(但不一定在所有内容都加载时)。我就速记的“新颖性”向您提出其他观点,并将相应地进行编辑。
    • @Blazemonger:这完全没有意义。那段是正确的:“jQuery DOM 加载代码应该始终在 jQuery DOM 加载事件中”。所以基本上你希望在 jQuery 答案上反对所有已发布的 jQuery DOM 加载 建议,因为 jQuery 是用 Javascript 编写的,即使你自己的答案实际上是相同的?我现在对你失去了所有的尊重:)
    【解决方案3】:

    这样试试

    $(function(){
      loadajax();
    });
    

    【讨论】:

    • 你似乎完全忘记了他们想要的 10 秒延迟 :)
    • 我故意忽略了它。任何人都不应该在任何页面上有 10 秒的延迟。我的猜测是它在那里用于调试目的。
    • 最好不要假设提问者想要什么。提供您的优化作为第二个答案,但就目前而言,您的代码根本无法回答所提出的问题。
    【解决方案4】:

    1000 以毫秒为单位——十秒就是 10000。另外,您正在寻找 $(document).ready

    $(document).ready(function(){
        setTimeout(function(){
           loadajax();
         },10000); // milliseconds
    });
    

    http://api.jquery.com/ready

    【讨论】:

    • @TrueBlueAussie “首选”在这种情况下是一个见仁见智的问题。我发现$(function(){...}) 的可读性较差,并且对于其他经验不足的开发人员来说可能更令人困惑,只需少量节省字符和周期。
    • @TrueBlueAussie 请重新阅读文档 -- 这不是新的,it's an alternate shorthand -- both 语法可以追溯到 v1.0。 $(document).ready syntax has not been deprecated 和 AFAIK 永远不会。
    • +1:因为它有效并且是一个早期的答案。我已按照您的建议再次阅读文档并注意您的观点(我的 newness 上的 cmets 现在已删除)。我想这是传播这个词的更多理由,因为方便的速记显然没有应有的广为人知:)
    猜你喜欢
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 2013-02-04
    相关资源
    最近更新 更多