javascript - 如何从客户端应用程序加载 Fusion Tables csv?

标签 javascript actionscript-3 actionscript-2 google-fusion-tables

我刚刚在玩 Google Fusion Tables,我想知道如何从客户端加载 csv。到目前为止,我已经尝试了几种选择:

来自 ActionScript 3.0:

var r:URLRequest = new URLRequest("https://www.google.com/fusiontables/exporttable?query=select%20*%20from%203685185%20");
r.method = URLRequestMethod.GET;
var l:URLLoader = new URLLoader(r);
l.addEventListener(Event.COMPLETE,loaded);
l.addEventListener(HTTPStatusEvent.HTTP_STATUS,onHTTPStatus);

function onHTTPStatus(event:HTTPStatusEvent):void{
    trace(event.status);
}
function loaded(event:Event):void{
    trace(this.loaderInfo.url,event.target.data);
}

来自 ActionScript 2.0:

var vars:LoadVars = new LoadVars();
vars.onLoad = function(loaded):Void{
    if(loaded) trace(unescape(this));
    else       trace("error loading data");
}
vars.onHTTPStatus = function(status:Number):Void{
    trace(status);
}
vars.load("http://www.google.com/fusiontables/exporttable?query=select%20*%20from%203685185%20&r="+new Date().getMilliseconds());

来自javascript:

$.get('https://www.google.com/fusiontables/exporttable?query=select%20*%20from%203685185%20',
    function(data) { alert(data); });

在 actionscript 中,所有内容都在独立播放器中工作,但在网上却不行,这听起来像是某种安全沙箱问题。 在 JS我明白了:

XMLHttpRequest cannot load https://www.google.com/fusiontables/exporttable?query=select%20*%20from%203685185%20. Origin http://lifesine.eu is not allowed by Access-Control-Allow-Origin.

我正在查询的表是公开的并且可以导出。我还在 Chrome 上使用 Simple REST Client 尝试了调用并得到了正确的响应。关于我可能会遗漏什么的任何提示?

最佳答案

我只能谈谈 javascript 方法。由于浏览器跨域访问限制,需要使用JSONP来获取结果。幸运的是 Fusion Tables 支持 JSONP。我在此 answer 中发布了一些示例代码.另一种方法是使用 google.visualization 库,此 answer 中有一些示例代码.

更新 @george-profenza

2 分。 FT JSONP api 的 URL 不同。对于 jsonp,您必须添加一个回调参数。试试这个:

var queryurl = 'https://fusiontables.googleusercontent.com/fusiontables/api/query?sql=select%20*%20from%203685185%20&jsonCallback=?';

还有一个示例成功函数:

 function dataHandler(data, textStatus, jqXHR) {
     alert(textStatus);
     var cols = data.table.cols;
     var rows = data.table.rows;
     for (var i = 0; i < cols.length; i++) {
         alert(cols[i]);
     }
     for (var i = 0; i < rows.length; i++) {
         for(j=0; j < rows[i].length; j++) {
             alert(rows[i][j]);
          }
     }
}

关于javascript - 如何从客户端应用程序加载 Fusion Tables csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10341740/

相关文章:

javascript - react 日期选择器版本 4.1.1。年份下拉标题箭头未显示

javascript - CSS/JS slider 过渡效果

php - AS3-PHP-MySQL : Hash user's password in AS3 or PHP?

flash - ActionScript 2.0中的声音可视化

actionscript-3 - 从 AS2 到 AS3 _root 相当于什么?

javascript - 带有动态创建行的表的表单

javascript - 使用 Javascript 访问 MS CRM 4.0 中 IFrame 中加载的页面上的控件

actionscript-3 - AS3 |从 URL 加载图像并开始拖动问题

actionscript-3 - ActionScript 3 : Hover over button to play a movie clip

flash - 如何在 ActionScript 中更改按钮 onclick?显示隐藏?