【发布时间】:2013-04-23 13:47:39
【问题描述】:
为了加载一些 geojson 数据,我需要在外部域上获取脚本,例如 http://www.stat.ucla.edu/~jeroen/files/la_county_simplified.min.json。我无法控制这个脚本的内容;我只知道 url,以及我感兴趣的脚本中定义的对象的名称。脚本的虚拟版本如下所示:
var my_data = {"foo" : 123, "bar" : 456}
现在在我的应用程序中,我想从其 URL 动态加载 my_data 对象。因为是跨域的,所以不能用ajax。它也不完全是jsonp,因为我的脚本定义了一个对象,而不是一个函数。一种方法是将其简单地作为<script> 插入当前文档的头部。不过,我想避免可能的副作用。
什么是更清洁的解决方案?我正在考虑创建一个<iframe>,然后在 iframe 中插入<script> 标签,并在 iframe 加载后提取对象。但是我不确定这是一个可靠的方法,可以跨浏览器工作(特别是绑定回调以在 iframe 中加载脚本后提取对象)。
是否有一些库或标准解决方案可以在干净的页面中加载脚本,并将特定对象的副本提取到主页?我已经对 jQuery 有依赖,这样就可以了。
【问题讨论】:
-
我认为你想要的是 JSONP,jQuery 支持 $.getJSON()、$.get 和 $.ajax 函数
-
我认为这就是 jQuery 实现 JSONP 的方式。
-
jsonp 假定函数名作为填充。我的脚本有一个对象,而不是一个函数。
-
my_data是固定名称吗?还是变量变量名? -
是变量名,但是被父应用知道。
标签: javascript jquery json cross-domain jsonp