加载JSON-P时可以避免使用全局回调函数吗?

时间:2012-11-22 18:58:04

标签: javascript jsonp

我想使用JSON-P在我的网页上加载我的Google日历Feed。为了使页面上的主要内容加载更快,我只在加载页面后才将JSON-P的脚本标记注入head标记。 Google Calendar API会返回带回调函数的脚本,请参阅示例here

是否可以避免将全局函数用作回调函数?我想包装所有必要的代码,用于注入标记并在一个包装函数中解析结果。

2 个答案:

答案 0 :(得分:2)

您可以使用应用程序所在的全局方法。

MYAPP.method({...});

答案 1 :(得分:1)

没有。当您使用JSON-P调用时,服务器返回如下内容:

callback({...})

使用<script>元素引用此JSON-P调用URL后,浏览器将下载JavaScript代码并执行它,这意味着使用服务器提供的数据执行callback函数。

如果您不希望回调函数污染全局命名空间,只需在回调函数中添加一些命名空间,如com.mycode.callback

使用JSON-P的最大优点是它可以在浏览器中使用Same Origin Policy,您可以轻松使用其他域中的数据。