我正在尝试使用jQuery.getScript加载jQuery模板插件,但即使它执行请求并且文件正确进入(用测试JS替换url并且javascript确实得到正确评估),jQuery .tmpl仍未定义,但如果我在Chrome的控制台中运行jQuery.tmpl,它就是一个函数。
示例代码:
<script type="text/javascript">
jQuery.getScript('http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js');
console.log(jQuery.tmpl); // returns undefined.
</script>
知道问题可能是什么?
答案 0 :(得分:3)
您应该等到加载脚本。
jQuery.getScript('http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js',
function(){
console.log(jQuery.tmpl);
}
);
答案 1 :(得分:2)
等到它加载。尝试使用:
jQuery.getScript('http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js', function() {
console.log(jQuery.tmpl);
});
或为了使其更具可读性,请尝试使用:
$.ajax({
url: "http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js",
dataType: "script",
success: function() {
console.log(jQuery.tmpl);
}
});
答案 2 :(得分:0)
您应该在getScript
jQuery.getScript('http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js',
function(){
console.log(jQuery.tmpl);
});
答案 3 :(得分:0)
您的问题是脚本是异步加载的,这意味着您需要等待它完成才能使用它。
http://api.jquery.com/jQuery.getScript/
解决方案是:
$.getScript('.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js', function (data, textStatus) {
//Use the script now
});
如果您需要立即使用,我建议您只需在页面上添加对脚本的引用。
答案 4 :(得分:0)
当下一个语句立即执行时,你需要在回调中包装它,而脚本加载可能需要一些时间。:
jQuery.getScript('http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js', function() {
console.log(jQuery.tmpl);
});
答案 5 :(得分:0)
我最终只是将.ajax调用同步,因此我可以将其用作逻辑流程的一部分:
jQuery.ajax({
url: script,
async: false,
dataType: "script",
success: function() {
console.log("Loaded "+script);
},
complete: function() {
console.log("Failed to load "+script);
}
});
答案 6 :(得分:0)
同步或异步扩展方法到$ .getScript:https://github.com/hudsonfoo/jquery-getscripts