如果我使用非类/原型方法不会发生此错误:原始文件:// Access-Control-Allow-Origin不允许

时间:2012-09-30 20:08:44

标签: javascript ajax coffeescript prototype cors

我遇到过这个CORS问题但是能够使用jsonp和callback =克服它吗?如下所示: XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin 我还为Chrome启用了“--allow-file-access-from-files”,我已将其托管在Google应用引擎上,并通过Firefox加载。

但是,我开始在javascript中使用类(通过CoffeeScript),当我使用class方法时,它给了我这个错误。请注意,我可以通过不使用下面的类/实例方法来解决这个问题:

问题: 我想在谷歌地图上显示几个位置。我打电话给谷歌融合表api获取我的数据并显示它。当我像常规方法一样调用dataHandler()方法而不是类方法时,它工作正常。当我把它称为类方法时,我在本地得到这个错误:“原始文件://不允许使用Access-Control-Allow-Origin。”我在Chrome上本地尝试。当我在谷歌应用引擎上部署/托管它时,我在同一行“400(错误请求)”上收到此错误

由于

var myMap = new MyMap();
google.load('visualization', '1.0', {"callback":myMap.initialize});

class MyMap
initialize: -> //Javascript equivalent: MyMap.prototype.initialize = function() {
  ...
  jqxhr = $.get(encodeURI(url), @dataHandler, "jsonp") // Does not work. 

  //Javascript equivalent: jqxhr = $.get(encodeURI(url), this.dataHandler, "jsonp");

  jqxhr = $.get(encodeURI(url), dataHandler, "jsonp") // This works without the @

  //Javascript equivalent: jqxhr = $.get(encodeURI(url), dataHandler, "jsonp");

dataHandler: (d) -> // Does not work. Javascript equivalent: MyMap.prototype.dataHandler = function(d) {

dataHandler= (d) -> // This works. Javascript equivalent: dataHandler = function(d) {

本地错误:

  

XMLHttpRequest无法加载   https://www.googleapis.com/fusiontables/v1/query?key=AIzaSyDjfc6i-&sql=SELECT%20Lat,%20Lng%20from%201Stisvr...&callback=?原始文件:// Access-Control-Allow-Origin不允许。

托管/服务器错误:

  

GET https://www.googleapis.com/fusiontables/v1/query?key=AIzaSyDjfc6i-&sql=SELECT%20Lat,%20Lng%20from%201Stisvr...&callback=? 400(不良请求)

1 个答案:

答案 0 :(得分:0)

使用某些代理,例如charles,而不是从文件系统访问文件。