0

我有一个 HTML5 webapp 和一个 API。

webapp 仅在启动时从 API 中提取数据。不过一段时间后,数据可能会变得陈旧,所以我在 X 分钟不活动后刷新 web 应用程序。

唯一的问题是,如果 API 关闭,刷新将失败,用户将看到一个错误页面。我想避免这种情况,因为即使数据陈旧,也应该允许使用 webapp。

因此,当刷新超时到期时,应先检查 API 是否已启动,然后再进行刷新,否则请重置计时器并在 X 分钟后重试。

function refresh(reloadUrl) {
  $.ajax({
    type: 'head',
    url: window.config.HOST_DOMAIN,
    success: function () {
      window.location = reloadUrl;
    },
    error: function (jqXHR) {
      console.log("Tried to refresh client, but API is unavailable (Error: " + jqXHR.status + ", URL: " + window.config.HOST_DOMAIN + ")");
      clearTimeout(window.IDLE_POWER_OFF);
        window.IDLE_POWER_OFF = window.setTimeout(window.client.navigation.splash.reload, window.IDLE_TIMEOUT);
    }
  });
}

但是,当我尝试此操作时,我总是会进入错误回调,并在我的控制台日志中显示以下内容:

XMLHttpRequest cannot load http://mydomain.com/api/whatever. Cannot make any requests from null.
Tried to refresh client, but API is unavailable (Error: 0, URL: http://mydomain.com/api/whatever) 

试图搜索错误“无法从 null 发出任何请求”,但它只找到了有关 iOS 问题的内容。有谁知道这个错误是什么意思?

4

1 回答 1

0

您没有说明什么浏览器,但这是因为您在使用的 HTML 文档中使用了 file:// url?

请参阅: 在 Chrome 中使用本地文件的 jQuery getJSON 问题

于 2013-06-07T03:25:11.610 回答