0

尝试读取跨域 csv 文件:

remote_url = “http://www.example.com/buglist.cgi?bug_status=NEW&columnlist=bug_id%2Cshort_desc&query_format=advanced&ctype=csv";
$.ajax({
    url:remote_url,
    type:"get",

    cache: false,
    dataType: "jsonp",                     
    success:function(data){    
        console.log(data);                
    },
    error: function(data){
        console.log(data);  
    }
});

虽然从服务器获得 200 状态,但它总是进入错误回调处理程序并记录 JavaScript 语法错误:

语法错误:缺少;在声明 6230 之前,"这是一个""简短描述"",等等等等。

我的 CSV 文件有两列“bug_id”和“short_desc”,其值如下:

bug_id = 6230
short_desc = this is a "short description", blah blah blah..

我知道错误是由于描述中的双引号引起的,但我不知道解决方案。我尝试“YQL”将 CSV 转换为 JSON,但null结果返回,可能是因为错误。

4

1 回答 1

0

JSONP 技术期望响应是 JavaScript。这就是您收到 JavaScript 错误的原因;它试图将 CSV 内容作为 JavaScript 执行。

JSONP 的工作原理是在服务器中定义一个回调函数,添加一个带有 URL 的脚本标签,告诉服务器它将调用什么函数,然后服务器使用 JavaScript 响应,该 JavaScript 以数据作为参数调用该函数。

换句话说,目标 URL 必须支持此协议。您不能只将 JSONP 用于任何任意请求。

您可能需要使用不同的技术来获取数据,例如向服务器发出 HTTP 请求的同域代理。如果您能够在 处更改代码example.com,您将拥有更多选择。

于 2013-09-17T15:50:25.397 回答