我有一个javascript从URL获取JSON数据并将数据加载到页面,然后我想调用另一个javascript来添加幻灯片效果。
有一个更简单的解决方案,即使用setTimeout。但是这个解决方案并不完整,因为从URL获取数据没有固定的时间。每次通话都会有所不同。
因此我想检查我的第一个javascript是否已加载,然后我想调用第二个javascript。
答案 0 :(得分:2)
JavaScript是一种异步语言,或者至少,它的HTTP API(大部分)是异步的。
您不应该使用settimeout,但是您应该使用异步链接来构建因果事件列表。有很多图书馆可供帮助,例如http://www.infoq.com/articles/surviving-asynchronous-programming-in-javascript
如果您要从自己的网站加载内容,那么当JSON最终加载时会有onsuccess / oncomplete事件,您可以为其分配回调。实际调用它取决于你的javascript框架,如果你使用它。
如果您使用名为JSONP的格式从远程站点使用数据,则需要定义回调,它应该是公共函数名称,例如 onMyDataArrived 。你应该在那里添加你的回调代码。有些框架会隐藏这些细节,它们会生成一个随机函数,它们会在数据到达时删除,并提供类似于onSuccess / onComplete的API。
如今,最流行的javascript框架是jQuery,你可以在这里做这些事情,比如:
$.ajax({
url: 'give_me_my_json.php',
dataType: 'json',
success: function(data){
//call your second javascript
},
error: function(){
//WHOOOPSIE... data could not be loaded
}
});