2014-10-30 59 views
0

我正在使用此Ajax调用来从Internet获取CSV文件。目前,它的实施方式是调用yahooapisSQL,如查询文件。使用Javascript执行的YQL功能

function getData(qry){ 
      $.ajax({ 
       url: 'http://query.yahooapis.com/v1/public/yql', 
       data: { 
        q: qry, 
        format: 'json', 
        _maxage: 120, 
        ts: getTS(dateNow) 
       }, 
       cache:true, 
       dataType: 'jsonp', 
       success:function(data){ 
        setFlowData(data);  
       } 
      }); 
     } 

qry类似于这样的事情:

if(data.query.count > 0){ 
     var queryData = data.query.results.row; 
     if (queryData.col2 == rt.id) { 
      rt.lbmp = queryData.col3; 
      rt.ts = queryData.col0; 
     }  
    } 

我的问题是我怎么实现:

select * from csv where url IN ('http://example.com/public/zone.csv') 

该文件,然后通过类似这样的功能解析没有使用YQL/SQL调用的相同功能?这可能与JavaScript实施?谢谢您的帮助。

+0

你想做什么? yql调用进入服务器,服务器查看您的查询和参数并构建返回的数据。如果这是形成这些数据的唯一方法,那么这就是你坚持的方式。为什么它甚至是一个问题? – Spacedman 2014-10-30 15:44:59

+0

因为我的任务是消除系统@Spacedman中对YQL的需求。我很想保留这一点,但不幸的是,我需要找到一种方法来消除我们的需要。 – 2014-10-30 15:46:29

+0

我不认为任何人都可以提供帮助,除非你至少告诉我们你传递给你什么'qry'。 – Spacedman 2014-10-30 15:47:17

回答

0

绝对可以在没有任何YQL的情况下处理CSV数据。您可以使用$ .ajax来获取csv数据,如果它来自您自己的域或CORS就绪,或通过CORS代理服务器。还有jquery-csv(https://code.google.com/p/jquery-csv/)或PapaParse(http://papaparse.com/)解析CSV数据。

+0

“......如果它来自你自己的域名......” - 如果不是:( – 2014-11-10 12:44:28

+0

“域名”可以被认为是“protocol://wwww.yourhost.com”的同义词url部分,或起源来源 出于安全原因,除非第三方服务器明确地启用“跨源访问”,否则通常会被浏览器专门阻止对其他域(=跨源访问)的调用,另外还有一种流行的ajax代理模式(通过中间私人或公共代理服务器调用ajax)。请搜索“cross origin ajax”或CORS以获取更多信息。 – 2014-11-11 00:29:08