I have a page that uses a ZingChart and loads the data via Ajax from multiple URLs in other domains. The data are in CSV files such as:
1, 2, 3, 4, 5
Or:
2.34,1.01,4.56
What I need is to access these files and construct a JSON for ZingChart in this way:
{"data":[THE_CSV_GOES_HERE], "name":"WHATEVER"}
My first problem is that I ran into the usual CORS problem (whose usefulness I still don't understand very well), and since I don't have control on the servers hosting the CSVs, I used this workaround as 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);
}
});
This raises a parsererror
, I suppose because the CSV is not in json format.
If I use "text" instead of "jsonp" I get the CROS error (No 'Access-Control-Allow-Origin' header is present on the requested resource.
) If I use "jsonp text" as in the documentation, I still get the parsererror
. If I use crossDomain: true, dataType: 'text'
to force a crossDomain but specifying it is text, I still get the CORS error.
It seems that I am having a similar problem as this person.
How can I overcome this? I cannot believe that in the modern Web it is not possible to get a string of text from a distributed server without refreshing the page. It looks like a strong limitation. In fact, I would think it is the client who should be able to allow cross domains, not the external servers (which are normally outside the client's control).