3 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
基本上,由于相同的来源策略,您不允许通过Ajax从另一个域请求JSON数据。Ajax允许您在页面加载后获取数据,然后在函数返回后执行一些代码/调用函数。我们不能使用Ajax,但允许注入<script>
标记进入我们自己的页面,这些标记允许引用其他域托管的脚本。
通常,您会使用它来包含来自CDN的库,例如jQuery..但是,我们可以滥用它并使用它来获取数据!JSON已经是有效的JavaScript(在大多数情况下),但是我们不能只在脚本文件中返回JSON,因为我们无法知道脚本/数据什么时候加载完,除非分配给变量或传递给函数,否则我们无法访问它。因此,我们所做的是告诉Web服务在它准备好时代表我们调用一个函数。
例如,我们可能会从股票交易所API中请求一些数据,并且与我们通常的API参数一起,我们给它一个回调,如下callThisWhenReady
..然后,Web服务用我们的函数包装数据,并按如下方式返回:callThisWhenReady({...data...})
..现在,一旦脚本加载,浏览器就会尝试执行它(正常情况下),这反过来调用我们的任意函数,并向我们提供我们想要的数据。
它的工作原理非常类似于普通的Ajax请求,除了调用匿名函数之外,我们还必须使用命名函数。
实际上,jQuery为您提供了无缝的支持,为您创建了一个唯一命名的函数,并将其传递出去,然后它将运行您想要的代码。
添加回答
举报
0/150
提交
取消