使用JSONP和AJAX读取跨域csv文件

时间:2013-09-17 15:44:06

标签: ajax csv jsonp

尝试阅读跨域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语法错误:

  

SyntaxError:missing;在声明6230之前,“这是一个”“简短描述”“,等等等等等等。

我的CSV文件有两列“bug_id”和“short_desc”,其中包含以下值:

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

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

1 个答案:

答案 0 :(得分:0)

JSONP技术希望响应是JavaScript。这就是您收到JavaScript错误的原因;它正在尝试将CS​​V内容作为JavaScript执行。

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

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

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