【发布时间】:2016-01-18 20:01:12
【问题描述】:
我正在通过 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;
});
【问题讨论】:
-
1. 没有正确关闭。 2. 取决于你有什么。 3. 取决于它得到什么响应。
-
为什么需要重新加载这些脚本?
-
4. 循环地狱从这里开始:
jQuery.getScript( "scriptone.js" ) -
并且不要将全局 ajax 处理程序放在事件处理程序中。那些应该只在页面上调用一次
-
这是一个可怕的无限循环!每次迭代都会增加分叉,这将很快失去控制。
标签: javascript jquery ajax getscript