在使用jquery加载ajax脚本时,我一直在经历一些奇怪的行为。当我在我的计算机上本地运行这个页面时一切都很好,当我在线运行它(在DropBox上)它无法加载说(在控制台上)一个引用错误:sjcl是未定义的。
这是页面(及其脚本):
<!DOCTYPE html><html lang="fr"><head><meta charset="utf-8"><title>Pack Résidanat — par @Anonyme</title><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><body>
<font face="monospace"><div id="status"></div></font>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(function(){
$("#status").append("Chargement du décrypteur... ");
$.ajax({
url:"http://dl.dropboxusercontent.com/s/5tsysv6hmneaxop/foo.js",
type:"GET",
dataType:"script",
success:function(data){
$("#status").append("[OK]<br/>Chargement de la clé de cryptage... ");
$.ajax({
url:"http://dl.dropboxusercontent.com/s/70d5avb1s7s7shd/crkey.js",
type:"GET",dataType:"script",
success:function(data){
$("#status").append("[OK]<br/>Chargement du pack... ");
$.ajax({
url:"http://dl.dropboxusercontent.com/s/nxxpecpdci9gtbd/pack.js",
type:"GET",
dataType:"script",
success:function(data){
$("#status").append("[OK]<br/>Décryptage du pack...<br/>");
$("#status").fadeOut("slow",function(){document.write(unescape(sjcl.json.decrypt(crkey,pack)));});
},
error:function(data){
$("#status").append("[ERROR]<br/>Erreur lors du chargement du pack.");
}
});
},
error:function(data){
$("#status").append("[ERROR]<br/>Erreur lors du chargement de la clé de cryptage.");
}
});
},
error:function(data){
$("#status").append("[ERROR]<br/>Erreur lors du chargement du décrypteur.");
}
});
});
</script>
</body></html>
这是在线版本:http://dl.dropboxusercontent.com/s/5o3r2bfknw93h62/pack.html
sjcl(Stanford Javascript Crypto Library http://crypto.stanford.edu/sjcl/)是在我第一次加载SUCCESSFULLY的foo.js文件中定义的。
foo.js全局使用严格模式(“use strict”)。
你能看到问题吗?
P.S:抱歉我的坏,贫穷和丑陋的英语..奇怪的部分:
当页面和foo.js文件托管在同一台服务器上时,无法使用jquery ajax加载“成功”:
http://dl.dropboxusercontent.com/s/5o3r2bfknw93h62/pack.html http://copy.com/kqIL8nF0WQjX/pack2.html
虽然当它们托管在不同的服务器上时,它可以正常工作(一个在Dropbox中,另一个在Copy.com中):
http://copy.com/tkGTmnJlJxS3/pack.html http://dl.dropboxusercontent.com/s/q3cnv2qdc7vjirh/pack2.html
任何线索?
答案 0 :(得分:0)
尝试类似的事情:
$(function(){
var stat = $("#status");
stat.append("Chargement du décrypteur... ");
$.when(
$.getScript("http://dl.dropboxusercontent.com/s/5tsysv6hmneaxop/foo.js").fail(function() {
stat.append("[ERROR]<br/>Erreur lors du chargement du décrypteur.");
})
).then(function() {
stat.append("[OK]<br/>Chargement de la clé de cryptage... ");
return $.getScript( "http://dl.dropboxusercontent.com/s/70d5avb1s7s7shd/crkey.js" ).fail(function() {
stat.append("[ERROR]<br/>Erreur lors du chargement de la clé de cryptage.");
});
}).then(function() {
$("#status").append("[OK]<br/>Chargement du pack... ");
return $.getScript( "http://dl.dropboxusercontent.com/s/nxxpecpdci9gtbd/pack.js" ).fail(function() {
stat.append("[ERROR]<br/>Erreur lors du chargement du pack.");
});
}).then(function() {
stat.append("[OK]<br/>Décryptage du pack...<br/>")
.fadeOut("slow",function(){
document.write( unescape( sjcl.json.decrypt(crkey,pack) ) );
});
});
});