我使用Mustache.js写了一个网站。模板通过jQuery使用AJAX加载。
当我在本地运行网站并进行测试时,一切都很好。但是,当我将网站上传到学校服务器时,jQuery的getScript
报告无法加载mustache.min.js
。
每当我需要运行渲染模板时,我都使用以下辅助函数:
doWithMustache: function(f) {
$.getScript("./js/mustache.min.js", function() {
f();
}).fail(
console.error("Failed to fetch mustache script.");
);
}
我正在使用它:
renderPage: function(uniqueBodyElement, lastModifiedDate) {
var data;
var headTemplate;
var bodyTemplate;
var articleTemplate;
//Wait until all data is available
$.when(
$.get("./templates/siteData.json", function(d){ data = d }),
$.get("./templates/HeadTemplate.mustache", function(hT){ headTemplate = hT }),
$.get("./templates/BodyTemplate.mustache", function(bT){ bodyTemplate = bT }),
$.get("./templates/ArticleTemplate.mustache", function(aT){ articleTemplate = aT })
).done(function() {
Helpers.doWithMustache(function() {
var partial = TemplateLoader.getTemplatePartial(uniqueBodyElement);
partial.lastModifiedDate = lastModifiedDate;
var renderedHead = Mustache.render(headTemplate, data);
var renderedBody = Mustache.render(bodyTemplate, data, partial);
var renderedArticleBody = Mustache.render(articleTemplate, data, { articleBody: renderedBody });
$('head').append(renderedHead);
$('body').html(renderedArticleBody);
console.log("Templates Loaded.");
});
}).fail(function() {
console.error("Failed to fetch templates or site data.")
});
}
在本地,这可以按预期工作。然而,在上传之后,我收到控制台错误,告诉我它"无法获取小胡子脚本"。不幸的是,fail()
似乎没有报告任何错误,所以我不知道导致问题的是什么。
显而易见的问题是路径错误,但当我检查Edge" Network"选项卡"开发者工具",正确加载所有内容,包括小胡子脚本:
我还通过将加载路径更改为我知道错误的内容来验证这一点。我不仅没有得到错误,我还得到了错误的错误"错误。
所以,我知道路径是正确的,但它仍然无法加载脚本。
有谁知道问题可能是什么,或者如何更接近找到它?
答案 0 :(得分:1)
您忘记了匿名函数引用,现在您始终运行% Overload 1
output = myFunction(5) % Does something
% Overload 2
output = myFunction(5) % Does something different
并将结果返回% Overload 1
output = myFunction(5) % Does something
% Overload 2
output = myFunction(5,'hey') % Does something different
(这将是console.log
)
将其更改为
fail()