【问题标题】:Loading jsRender remote templates never updates加载 jsRender 远程模板永远不会更新
【发布时间】:2015-05-05 18:43:51
【问题描述】:

我正在尝试使用这段代码从文本文件中加载 jsRender 模板

 $.get('/js/templates/template1.txt', function (value) {
        ..do stuff;
});

在我更改模板之前,这一切正常。在我更改模板后,txt 文件永远不会重新加载,并且我呈现的 HTML 永远不会反映更改,除非我更改 txt 文件的名称。

有没有办法清除对象或其他任何东西,或者任何人都可以解释为什么它不想重新加载 txt 文件。

编辑:

这是函数中的代码,用于使用传入的数据渲染模板(上面的'..do stuff. area)

 var personTemplate = $.templates(value);
 var html = personTemplate.render(inputData);
 $(selectorName).html(html);

【问题讨论】:

    标签: jquery jsrender


    【解决方案1】:

    它可能被缓存在服务器上。您需要确保使用缓存策略的适当标头为文件提供服务。例如,如果您在服务器上使用 node.js,您可以编写

    res.header('Cache-Control', 'no-cache');

    res.header('Cache-Control', 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0');

    或类似的。

    【讨论】:

    • 你能详细说明一下吗?不在客户端使用 node.js 简单的 jQuery,它使用文本文件通过模板呈现数据
    • 要访问文本文件,您必须使用 Web 服务器打开页面的 html 文件。因此,这取决于您的环境,以及针对不同文件类型配置 Web 服务器的方式。 (在我的系统上,它无需将缓存设置为 false 即可工作)。此外,尝试将 .fail() 回调添加到您的 jQuery ajax 调用中。当您更新 txt 文件时,它调用成功还是失败? - 如果失败,错误信息是什么...
    • 我成功了,但我认为它是缓存 txt 文件的服务器 - 请参阅上面关于更改为 html 文件的答案
    【解决方案2】:

    在进行 ajax 查询时尝试禁用缓存。您可以在 jQuery 中按如下方式执行此操作

    $.ajax({
        url: templatesUrl,
        cache: false,
        success: function (data) {
        }
    });
    

    【讨论】:

      【解决方案3】:

      一些实验让我相信有某种缓存在起作用,但它似乎与 jQuery 或 jsRender 没有任何关系。

      我尝试了几个不同的扩展名,似乎 .html 扩展名阻止了它被缓存。

      只为遇到此问题的人提供信息

      还有 .html 文件,在 IDE 中使用这些文件比 .txt 文件更容易

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-07
        • 1970-01-01
        相关资源
        最近更新 更多