0

以下不是跨域问题,但它闻起来像一个。

所以这是我的设置(这很快让我变灰了):

我有一个 index.html 文件,它正在加载一个名为 config.json 的平面文件,该文件位于 index.html 旁边。我已经使用了 $(document).ready() 和 window.addEventListener('load'... 来做到这一点:

$(document).ready(function(){
    $.get('config.json', function(data){
        alert('asd');
    })
});

警报几乎从不触发。这发生在 Chrome 9 和 Firefox 3.6 和 FF4 中。其他浏览器没试过。我在网络选项卡下查看 Firebug 和开发控制台,我可以看到 config.json 加载。它具有正确的标头(应用程序/json)。所以数据正在加载,但回调函数不会触发。

但是,在 Firefox 中,如果我以快速双倍模式(如心跳)刷新,那么我的警报偶尔会触发。我只能让 Firefox 在 3.6 中做到这一点,所以我假设它是因为 js 引擎比 v4 和 Chrome 慢一点。

最重要的是,它变得陌生。如果我在同一个域上设置 config.json 的完整路径,则无法加载。如果我将 config.path 设置为http://localhost/config.json并从http://local.mac.com/访问该站点,我的警报就会着火!如果我从 localhost 切换域和访问并使用http://local.mac.com(或 abcdef.com)作为 config.json,它也会触发。

我在 /etc/hosts (mac) 中有一个“local.mac.com”域设置,所以我可以用它而不是 localhost 来测试站点。我还在“abcdef.com”的 /etc/hosts 中尝试了另一个域,并得到了相同的结果。

一定有什么我只是想念的东西,因为我的时间快凌晨 2 点了,但我很困惑。谁能告诉我到底发生了什么?

4

1 回答 1

0

您是否尝试过 $.getJSON 调用?

$.getJSON('config.json', null, function(data) { alert(data);  }); 
于 2011-03-07T11:43:20.610 回答