0

我在从 $.get() 的文件中加载数组时遇到问题。我得到了一个很好的 HTTP 状态代码,因此可以访问该文件,但它没有将它变成一个数组。

这是我的代码

$(function() {

    $.get('https://gist.github.com/storbeck/6956620/raw/e274c8af60ef25e7bc481fded0c9e4e8e8412e75/testdata', function(data) {
        $('#container').highcharts('StockChart', {      

            rangeSelector : {
                selected : 1
            },

            title : {
                text : 'Test Data'
            },

            series : [{
                name : 'Data',
                data : data,
                tooltip: {
                    valueDecimals: 2
                }
            }]
        });
    });
});

这是当前代码不起作用的jsFiddle

我能够通过将数组复制/粘贴到数据变量中而不使用 $.get 来使其工作,所以我认为数组不是问题。这是那个版本

我遇到的另一件事是 Highcharts 中的纪元时间,当我在在线转换器中测试时间时,它可以很好地转换时间。

4

3 回答 3

2

您得到一个空结果,因为您尝试加载的页面具有Access-Control-Allow-Origin限制谁可以远程加载页面的标题。$.ajax、$.post、$.get 都不会加载此页面,因为它们被阻止了。

如果您将脚本加载到本地浏览器中,您将在浏览器控制台日志中看到:

XMLHttpRequest cannot load
https://gist.github.com/storbeck/6956620/raw/e274c8af60ef25e7bc481fded0c9e4e8e8412e75/testdata.
Origin http://www.yourdomain.com is not allowed by Access-Control-Allow-Origin. 
于 2013-10-13T01:34:09.713 回答
0

它是同源策略问题...

如果您有权访问生成数据的文件,则可以使用JSONP,数据应使用回调函数进行格式化。如果您有权访问服务器,则可以添加如下内容:

Access-Control-Allow-Origin: ...

但可能对您有用的唯一方法是首先使用PHP, ASP脚本或其他脚本获取结果,然后使用您的 ajax 调用该脚本。但这应该在同一个域上。

希望能帮助到你。

于 2013-10-13T01:23:08.043 回答
0

这是因为同源政策

您可以解决此问题的一种方法是在您的服务器上请求文件,这没有问题,然后对您的服务器进行 ajax GET 调用:

在您的服务器上创建一个新页面,并在该页面中请求 gist 文件并将其内容作为响应返回。当然,您需要动态页面才能使其正常工作

将 jQuery 中的端点更改$.get为该页面,例如:www.mydomain.com/highchartvalues

利润

于 2013-10-13T01:23:45.767 回答