我是一名内心的应用工程师,也是Javascript的新手,但我很快就学习了,因为我在办公室完成了一项任务,包括将我们的内部测试网站移植到新的用户界面。显然,我会尝试发布一些代码,以免损害公司可能认为敏感的任何内容。我已经搜索了这个问题的答案,在将$.isReady
放入Chrome调试器并接收到true之后,我挥挥了白旗并决定在这里询问。
我有一个奇怪的问题,我的$(document).ready()
调用会触发,但.ready()
参数中包含的函数却没有。这是函数本身:
$(document).ready(function () {
$("p").text("The DOM is now loaded and can be manipulated.");
$.getJSON('/Home/RetrieveServersJson', function (data) {
servers = data;
for (i = 0; i < servers.length; i++) {
if (servers[i].IsGT)
gtServers[length] = servers[i];
else
mrSixSservers[length] = servers[i];
}
alert(servers.length + " " + mrSixSservers.length + " " + gtServers.length);
});
});
正如您可能已经猜到的那样,开头的行只是一个修改<p>
元素的测试,该元素最初表示“尚未准备好”。该网站正在运行jQuery 1.10.2。以下是我已经确定的一些事情:
$(document).ready()
的呼唤开火了。我已经从这个事实中推断出这个事实,即函数上的断点停在那里,然后我可以在调用结束之前逐步浏览jQuery库,但是它永远不会进入处理函数,即使我在那里放了一个断点而是返回到源代码的顶部。我很确定我可以认为这不是我的脚本引用的问题。我正在使用bundle来保存脚本,但这里是呈现的脚本在页面上的样子:
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/jquery-ui.custom.min.js"></script>
<script src="/Scripts/bootstrap.min.js"></script>
<script src="/Scripts/excanvas.min.js"></script>
<script src="/Scripts/jquery.flot.min.js"></script>
<script src="/Scripts/jquery.flot.resize.min.js"></script>
<script src="/Scripts/jquery.sparkline.min.js"></script>
<script src="/Scripts/fullcalendar.min.js"></script>
<script src="/Scripts/jquery.jpanelmenu.min.js"></script>
<script src="/Scripts/jquery.nicescroll.min.js"></script>
<script src="/Scripts/unicorn.js"></script>
<script src="/Scripts/unicorn.dashboard.js"></script>
另外,我有另一个页面使用完全相同的脚本引用,我在那里测试了一个文档就绪函数,它运行得很好。
<p>
元素中的更改,以查看DOM是否在准备中被延迟。Uncaught Invalid dimensions for plot, width = null, height = null
之外,控制台不会显示任何错误,这会在jquery.flot.min.js中随时加载。任何人都知道什么可能导致$ .isReady显示为true而$(文档).ready()函数只是不会触发?
答案 0 :(得分:3)
如果我理解正确的话,你的第4点就会说话。要确认,您是说您用以下内容替换了问题中发布的代码:
$(document).ready(function(){
alert("I am here");
});
它不起作用?
如果是这样,那么问题肯定出现在你引用的一个脚本库中。
正如测试一样,我可以建议:
除了以上所有的js代码&#34;我在这里&#34;测试
使用您在上面发布的细分列表替换捆绑的库:
注释掉所有上面的库(除了jQuery,当然,因为你正在测试它)并一次添加一个,直到你找出罪魁祸首。
如果&#34;我在这里&#34;在单独引用脚本时工作,然后脚本包就会出现问题。
答案 1 :(得分:0)
尝试添加
$.ajaxSetup({
"error":function() { $("p").text("The DOM is now loaded but I got ajax error"); }
});
答案 2 :(得分:0)
我会重新重新检查脚本引用。代码很好。
您可以尝试删除引用,并添加一些托管库,以确保。
<p>
修改强>
您还可以通过以下方式检查jQuery是否已准备就绪:
if ( jQuery.isReady ) {
alert('jQuery is ready');
}