【问题标题】:YQL functionality with Javascript implementation带有 Javascript 实现的 YQL 功能
【发布时间】:2014-10-30 15:40:25
【问题描述】:

我正在使用此Ajax 调用从 Internet 获取 CSV 文件。目前它的实现方式是调用yahooapisSQL 类似的文件查询。

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 类似于这样:

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

然后文件会被类似这样的函数解析:

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

我的问题是如何在不使用 YQL/SQL 调用的情况下实现相同的功能? JavaScript 实现可以实现吗?感谢您的帮助。

【问题讨论】:

  • 你想做什么? yql 调用转到服务器,服务器查看您的查询和参数并构建返回的数据。如果这是形成该数据的唯一方法,那么这就是您坚持的方式。为什么它甚至是一个问题??
  • 因为我的任务是消除系统 @Spacedman 中对 YQL 的需求。我很想保留它,但不幸的是,我需要找到一种方法来消除我们对它的需求。
  • 我认为没有人可以提供帮助,除非您至少告诉我们 qry 您传递给此的内容。
  • @Spaceman 我添加了查询。它只是对文件的调用,然后由另一种方法解析。
  • 那么你只是想将整个csv文件放入一个JS变量中吗? YQL 只是为你做 csv->json?所以你只需要一个解析器……goog……code.google.com/p/jquery-csv

标签: javascript jquery ajax yql


【解决方案1】:

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

【讨论】:

  • "...如果它来自您自己的域..." - 如果不是 :(
  • "domain" 可以被认为是 url 的 "protocol://www.yourhost.com" 部分的同义词,或者是网站的来源。出于安全原因,浏览器通常会故意阻止对其他域的 ajax 调用(=跨源访问),除非第三方服务器明确启用“跨源访问”。还有一种流行的 ajax 代理模式(通过中间私有或公共代理服务器的 ajax 调用)。请搜索“cross origin ajax”或 CORS 了解更多信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多