Javascript setInterval不调用函数
如果我在Javascript setInterval不调用函数,javascript,function,setinterval,Javascript,Function,Setinterval,如果我在setInterval区域中放置断点,我每秒都会收到通知,但是getJSON调用永远不会执行。查看我的服务器日志,从来没有对警报\u url的请求 更新 似乎是间歇性铬问题。在Safari上启动了它,它按预期工作。现在清除Chrome,我会再试一次。您的代码似乎正常,但缺少的是警报url的初始化。您的代码示例中没有包含这一点,所以我做了一个修改。以下是对我有用的代码: get_alerts = function(alerts_url) { return $.getJSON(ale
setInterval
区域中放置断点,我每秒都会收到通知,但是getJSON
调用永远不会执行。查看我的服务器日志,从来没有对警报\u url
的请求
更新
似乎是间歇性铬问题。在Safari上启动了它,它按预期工作。现在清除Chrome,我会再试一次。您的代码似乎正常,但缺少的是警报url的初始化。您的代码示例中没有包含这一点,所以我做了一个修改。以下是对我有用的代码:
get_alerts = function(alerts_url) {
return $.getJSON(alerts_url, function(alerts) {
return $("#alerts_box").html("" + alerts.length + " Alerts");
});
};
window.setInterval(function() {
return get_alerts($("#alerts_box").data("alerts-url"));
}, 1000);
看起来是某种缓存问题。我以为Chrome将所有AJAX请求都视为不可缓存的,但我想不是。以下是修复方法:
$("#alerts_box").data("alerts-url","http://data.wien.gv.at/daten/wfs?service=WFS&request=GetFeature&version=1.1.0&typeName=ogdwien:BAUMOGD&srsName=EPSG:4326&outputFormat=json&maxfeatures=5")
get_alerts = function(alerts_url) {
$.getJSON(alerts_url, function(alerts) {
$("#alerts_box").html(new Date().getTime() + " " + alerts.features.length + " Alerts");
});
};
window.setInterval(function() {
get_alerts($("#alerts_box").data("alerts-url"));
}
, 1000);
将
缓存
选项与请求一起发送似乎可以解决此问题。显然,您还可以发送一个随机的、唯一的字符串(如日期/时间)作为url中的参数,这也将修复它您在网络选项卡中看到了什么?@SLaks-我没有看到任何与JSON调用相关的内容。只是请求获取页面的资源load@ArrayKnight-那对你有用吗?我的似乎没有加载anything@TylerDeWitt这不是你的问题,但你不需要在设置间隔中返回,你只需要调用get_alerts()。@ryan-谢谢你的提示。实际上,所有的CoffeeScript都被转换成javascript,但感谢您的指示。
get_alerts = function(alerts_url) {
var noCache;
noCache = new Date().getTime();
return $.getJSON(alerts_url, {
"cache": noCache
}, function(alerts) {
return $("#alerts_box").html("" + alerts.length + " Alerts");
});
};