1
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,我会再试一次。

4

2 回答 2

0

您的代码似乎没问题,但缺少的是 alerts-url 的初始化。你没有在你的代码示例中包含它,所以我做了一个jsFiddle 来测试。这是对我有用的代码:

$("#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);
于 2013-08-12T18:04:31.733 回答
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 中发送一个随机的、唯一的字符串(如日期/时间)作为参数,这也将修复它

于 2013-08-12T18:39:19.533 回答