大家好,我有一个很大的疑问....
在我的javscript代码中,我需要每1分钟重新加载一个js文件(其中有一个多维数组)。
要重新加载它,建议我使用ajax
或其他方式?
示例 A :
try {
jQuery.ajax({
url: "http://www.fake.con/scripts/out/array/week-quakes.js",
dataType: "script",
cache: false
});
}
catch(e){
var aggiungi= '<span>there's error about server</span>';
$(aggiungi).appendTo('#lista-eq');
}
示例 B
$("head script[src='http://www.fake.con/scripts/out/array/week-quakes.js']").remove();
$('head').append('<script type="text/javascript" src="http://www.fake.con/scripts/out/array/week-quakes.js"><\/script>');
这些代码位于setInterval(function())
然而我的问题还在于,当我的realod js文件可能已经准备好或不存在时,我该如何解决这个问题?
我希望你能帮助我并建议好:)
答案 0 :(得分:3)
我会选择那样的东西。首先删除旧版本。然后使用新元素创建一个新元素并添加某种&#34; cachebuster&#34;到网址,所以它不会重新加载缓存版本。
let loadJsScript = function(src) {
let oldScript = $("script[src='" + src + "']"),
script = document.createElement('script');
oldScript && oldScript.remove();
script.type = 'text/javascript';
script.src = src
$('head').append(script);
}
loadJsScript('/scripts/out/array/week-quakes.js?cachebuster='+ new Date().getTime());
要每分钟运行一次这个函数,你可以用setInterval函数包装它。
setInterval(function(){
loadJsScript('/scripts/out/array/week-quakes.js?cachebuster='+ new Date().getTime());
},60000)