Jquery getScript(在 ajax 调用之后)使用 100% CPU

Jquery getScript (after ajax call) uses 100% CPU

本文关键字:使用 100% CPU 之后 调用 getScript ajax Jquery      更新时间:2023-09-26

我正在通过ajax在一个页面上加载一个帖子,该页面已经有几个我需要的脚本。我需要重新加载这些脚本,最初将它们放在被调用的 ajax 页面中,但意识到(由于 chrome 控制台警告)这是一个禁忌,所以我正在尝试使用适当的(?)方法并在我的 ajax 调用完成后使用 jQuery.getScript 加载我的脚本(由 .ajaxComplete 通知)。

当我尝试加载我的脚本(见下面的代码)时,它似乎可以工作,但我在控制台的某种循环中收到无穷无尽的"成功"消息,直到我的机器使用接近 100% 的 CPU,我需要强制退出我的浏览器。

任何想法是什么原因造成的?谢谢!

jQuery(document).ready(function(){
  jQuery.ajaxSetup({cache:false});
  jQuery(".post-link").click(function(){
    var post_link = $(this).attr("href");
    jQuery("#single-post-container").html("content loading");
    jQuery("#single-post-container").load(post_link);
    jQuery( document ).ajaxComplete(function() {
      jQuery( ".log" ).text( "Triggered ajaxComplete handler." );
      jQuery.getScript( "scriptone.js" )
      .done(function( script, textStatus ) {
        console.log( textStatus );
      })
      .fail(function( jqxhr, settings, exception ) {
        jQuery( "div.log" ).text( "Triggered ajaxError handler." );
      });
      jQuery.getScript( "scripttwo.js" )
      .done(function( script, textStatus ) {
        console.log( textStatus );
      })
      .fail(function( jqxhr, settings, exception ) {
        jQuery( "div.log" ).text( "Triggered ajaxError handler." );
      });
    });
    return false;
  });

每次进行 ajax 调用时,您的 ajaxComplete 函数都会执行。它本身包含ajax调用,这些调用都将触发这个ajaxComplete函数,该函数包含ajax调用,该函数将全部触发此ajaxComplete函数,该函数包含ajax调用,该函数都将触发此ajaxComplete函数,该函数包含ajax调用,该函数将全部触发此ajaxComplete函数,该函数包含ajax调用,该函数将触发此ajaxComplete函数,该函数包含ajax调用,该函数将都触发这个 ajaxComplete 函数,其中包含 ajax 调用,这些调用都将触发这个 ajaxComplete 函数,该函数...

这是无限递归,而不是循环。 不要把 Ajax 放在 AjaxComplete 函数中。