onReady() 在浏览器恢复页面时不会执行 $.getJSON()
onReady() doesn't execute $.getJSON() when browser restores a page
让我首先声明,当我打开新的浏览器页面并输入我的 Web 服务器的 URL 时,下面的代码工作正常,当我重新加载页面(F5 或 Ctrl-R)时也可以工作。
但是,如果我重新打开关闭的浏览器窗口并且浏览器恢复了我的旧选项卡,它只能部分工作:然后,今天的日期被更新并显示(请参阅下面的代码,非常简单),但getJSON()调用似乎没有执行。浏览器不断显示上一个会话中的数据。仅当我更新页面 (F5) 时,浏览器窗口中的数据才会更新。
我确定这不是服务器。还能是什么?
浏览器:火狐,铬,最新版本。
在索引中使用此代码.html
<script>
$(document).ready(onReady());
</script>
和这个代码在帮助器.js
var onReady = function() {
// Display current date
var dateText = moment().format("dddd, Do MMMM YYYY");
var dateHTML = "<h2>" + dateText + "</h2>";
$("#date-col").append(dateHTML);
:
:
// Retrieve data from server and display it
var statText = "Statistics:";
$.getJSON("courses/starter", function(data) {
statText = statText.concat(" " + data.count + " starter");
$.getJSON("courses/dessert", function(data) {
statText = statText.concat(", " + data.count + " dessert");
$("#statistics").text(statText);
});
});
}
您必须传递回调而不是立即执行函数。
尝试:
<script>
$(document).ready(onReady);
</script>
$( document ).ready(handler)
期望参数是一个函数表达式,稍后DOM
准备就绪时执行
在您的示例中,您正在调用onReady()
函数并且该函数不返回任何内容(undefined
),因此执行将如下所示: $(document).ready(undefined);
要么使用像 $(document).ready(onReady);
这样的函数表达式,要么onReady()
应该返回一个稍后要执行的函数。
速记会$(onReady)
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- 带有Spring的$.getJSON未执行回调
- getJSON回调未执行
- onReady() 在浏览器恢复页面时不会执行 $.getJSON()
- $.getJSON() 在 $.each() 循环中的调用未按顺序执行
- 在jQuery.getJSON()执行操作之前拦截并修改JSON字符串
- 我该如何调整.当它执行getJSON以返回按日期排序的结果时
- 在执行CORS时,getJSON和ajax之间的cookie差异
- $.getJSON() 中的代码不会被执行
- 美元.getJSON .always()方法在HTTP错误时无法执行
- 美元.getJSON执行错误回调
- 延迟与getJSON调用不异步执行
- $. getjson()执行无序