2012-02-24 23 views
0

我有一点有挑战性的问题。我使用Blogger JSON API来获取JSON数据并显示在页面上。通常情况下这是非常简单的:触发在编译javascript回调

<script src="http://blog-name.blogspot.com/feeds/posts/default?alt=json-in-script&amp;callback=renderPost&amp;max-results=4"></script> 

你该请求数据,并通过了数据对象的JavaScript回调(在这种情况下,回调被称为renderPost)页面上嵌入此脚本。

问题是我正在使用Closure编译器来编译我的JS的其余部分。所以,renderPost被混淆了。

你会如何去模仿这种行为与JavaScript?你可以使用AJAX请求来获取JSON对象吗?

问题的一部分是我不知道Blogger在这里做什么,所以对此的解释也会有帮助。

回答

3

Closure compiler,可将变量导出如下:

window['varname'] = varname; 

例如:

// ==ClosureCompiler== 
// @compilation_level ADVANCED_OPTIMIZATIONS 
// @output_file_name default.js 
// ==/ClosureCompiler== 
window['renderPost'] = renderPost; 
function renderPost(name) { 
    return prompt('', ''); 
} 

编译为:

window.renderPost=a;function a(){return prompt("","")}a(); 

代替(省略window['renderPost'] = renderPost时) :

prompt("",""); 
+0

PS。 [文档](https://developers.google.com/closure/compiler/docs/api-tutorial3#export)。 – 2012-02-24 20:37:04

+0

作品!感谢您及时的回复。 – djreed 2012-02-24 20:49:24

1

这是做jsonp,这是目前从其他域获取json的唯一方法。不,你不能使用常规的Ajax请求进行跨域通信。请参阅Rob W回答如何解决您的问题。附件号码: