无法通过ajax请求获取CSV文本

我有一点不能检索csv响应的问题。

这里有一个csv 链接到csv

我正在尝试检索此数据,但是响应中的特殊字符存在问题。

我成功地收到了数据但是jQuery尝试解码它并通过语法错误:我的请求是:

$.ajax({ url: 'http://toolserver.org/~daniel/WikiSense/Contributors.php?wikilang=en&wikifam=.wikipedia.org&page=Cloud+computing&since=&until=&grouped=on&order=-edit_count&max=1000&order=-edit_count&format=csv', dataType: "script", success: function(data){ alert('success'); }, error: function(test1, test2, test3) { alert('error'); } }); 

错误是(指向%字符)

 SyntaxError: syntax error 1004+%28922%2F82%29,SamJohnston,2008-07-26+09%3A40,2013-03-07+18% 

我还尝试将dataType设置为文本,以便不解码数据。 在这种情况下,我收到ajax请求的错误。

 $.ajax({ url: 'http://toolserver.org/~daniel/WikiSense/Contributors.php?wikilang=en&wikifam=.wikipedia.org&page=Cloud+computing&since=&until=&grouped=on&order=-edit_count&max=1000&order=-edit_count&format=csv', dataType: "text", success: function(data){ alert('success'); }, error: function(test1, test2, test3) { alert('error'); } }); 

我试着尝试.ajax()参数contentType,dataType,scriptCharset等。它没有帮助。

在我看来,这是一个跨域请求是不可接受的。 阅读此处和此处了解更多信息

dataType: "text"是正确的。 听起来你正在遇到同源策略 ,这会阻止跨域调用。 当你说dataType: "script" ,jQuery会自动将请求转换为添加script元素,而不是进行实际的ajax调用。 添加跨域引用脚本的script元素并不违反SOP(这就是为什么我们可以使用像谷歌和微软这样的CDN用于常见脚本)。 但是在抓取CSV时你不能这样做,因为CSV当然不是有效的JavaScript代码。

如果您正在检索的服务器在您的控制之下,并且您使用的是现代浏览器( 在这种情况下意味着任何模糊的Chrome,Firefox或Opera,或使用IE9或更高版本),您可以实施跨源资源共享 ,如果服务器允许请求文档的源来源,则允许跨源Ajax调用。 CORS基本上意味着响应HTTP OPTIONS调用,询问是否可以使用适当的头发送ajax调用。