jQuery的`getScript`失败了。路径正确,脚本已正确下载。

时间:2015-12-27 00:15:46

标签: javascript jquery ajax

我使用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"选项卡"开发者工具",正确加载所有内容,包括小胡子脚本:

enter image description here

我还通过将加载路径更改为我知道错误的内容来验证这一点。我不仅没有得到错误,我还得到了错误的错误"错误。

所以,我知道路径是正确的,但它仍然无法加载脚本。

有谁知道问题可能是什么,或者如何更接近找到它?

1 个答案:

答案 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()