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);
如果我在setInterval
区域放置一个断点,我会每秒收到通知,但getJSON
调用永远不会被执行。查看我的服务器日志,永远不会向alerts_url
发送请求。
更新 似乎是一个间歇性的Chrome问题。在Safari上解决它并按预期工作。立即清除Chrome,我会再试一次。
答案 0 :(得分:0)
您的代码似乎没问题,但缺少的是alerts-url的初始化。您没有在代码示例中包含它,因此我创建了jsFiddle to test。以下代码对我有用:
$("#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);
答案 1 :(得分:0)
看起来是某种缓存问题。我认为Chrome将所有AJAX请求视为不可缓存,但我猜不是。这是修复:
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");
});
};
发送cache
选项以及请求似乎解决了这个问题。显然,你也可以发一个随机的,唯一的字符串(比如日期/时间)作为url中的一个参数,也可以修复它