我有一个使用ZingChart的页面,并通过Ajax从其他域中的多个URL加载数据。数据采用CSV文件,例如:
1, 2, 3, 4, 5
或者:
2.34,1.01,4.56
我需要的是以这种方式访问这些文件并为ZingChart构建JSON:
{"data":[THE_CSV_GOES_HERE], "name":"WHATEVER"}
我的第一个问题是我遇到了通常的CORS问题(我仍然不太了解它的用处),并且因为我无法控制托管CSV的服务器< / strong>,我将此解决方法用作explained here:
$.ajax({
url:"http://otherdomain/test.csv", // This is dynamically placed
dataType: 'jsonp',
success:function(res){
return res;
},
error:function(r, error){
alert("Error " + error);
}
});
这会引发parsererror
,我想因为CSV不是json格式。
如果我使用&#34; text&#34;而不是&#34; jsonp&#34;我收到CROS错误(No 'Access-Control-Allow-Origin' header is present on the requested resource.
)如果我使用&#34; jsonp text&#34;和documentation一样,我仍然得到parsererror
。如果我使用crossDomain: true, dataType: 'text'
强制执行crossDomain但指定它是文本,我仍然会收到CORS错误。
我似乎遇到了与this person类似的问题。
我怎样才能克服这一点?我无法相信在现代Web中,如果不刷新页面,就无法从分布式服务器获取一串文本。它看起来像一个强大的限制。事实上,我认为客户应该能够允许跨域,而不是外部服务器(通常在客户端的控制之外)。
答案 0 :(得分:1)
您为网站的后端/托管环境使用了什么?你可以简单地访问CSV并从后端返回它们,因为从服务器端访问它们不应该有这个问题......
答案 1 :(得分:1)
您可以尝试使用概述here的服务器端请求获取csv文件,然后只需对服务器端Web方法进行ajax调用即可获取csv字符串。