使用javascript获取文件的修改时间戳

rubo77

是否可以仅使用JavaScript来获取文件的修改后的时间戳?

我使用JSON文件通过javascript填充页面,我想显示该JSON文件的时间戳。

TJ人群

如果您通过真正的ajax(即通过XMLHttpRequest检索文件,则可以这样做,前提是您将服务器配置为Last-Modified在发送数据时发送标头。

这里的基本要点是,当您使用时XMLHttpRequest,您可以访问响应头。因此,如果服务器发回邮件Last-Modified,则可以使用它:

var xhr = $.ajax({
    url: "data.json",
    success: function(response) {
        display("Data is " + response.data + ", last modified: " + xhr.getResponseHeader("Last-Modified"));
    }
});

刚刚在Chrome,Firefox,IE8和IE11上尝试过。运行良好(即使数据来自缓存)。


您在下面说过,您需要循环执行此操作,但是您始终看到变量的最后一个值。这说明我已经完成了以下操作:

// **WRONG**
var list = /*...some list of URLs...*/;
var index;
for (index = 0; index < list.length; ++index) {
    var xhr = $.ajax({
        url: list[index],
        success: function(response) {
            display("Data is " + response.data + ", last modified: " + xhr.getResponseHeader("Last-Modified"));
        }
    });
}

那里的问题是所有success回调都对该变量持久的引用xhr,而其中只有一个。因此,所有回调都将看到分配给的最后一个值xhr

这是经典的关闭问题。这是一种解决方案:

var list = /*...some list of URLs...*/;
list.forEach(function(url) {
    var xhr = $.ajax({
        url: url,
        success: function(response) {
            display("Data for " + url + " is " + response.data + ", last modified: " + xhr.getResponseHeader("Last-Modified"));
        }
    });
});

由于forEach回调的每个迭代都有其自己的xhr变量,因此不会产生串扰。(您需要forEach在旧版浏览器上进行填充。)


您在下面说:

我已经考虑过关闭问题,这就是为什么我xhr[e]在循环中使用数组的原因e……但是您的示例确实有帮助……

并链接到此代码的要点:

//loop over e....
nodename=arr[e];
node_json=path_to_node_json+nodename;
html +='<a href="'+node_json+'" target="_blank" id="host_'+nodename+'">data</a></td>'
    +'</tr>';
xhr[e] = $.ajax({
    url: node_json,
    success: function(response) {
        $('#host_'+nodename).append("last modified: " + xhr[e].getResponseHeader("Last-Modified"));
    }
});

仍然存在经典错误:success函数关闭变量 e,而不是success创建函数时的值,因此在success函数运行时,e将在循环中为其分配最后一个值。

forEach我之前给出示例非常适合:

// (I assume `node_json`, `html`, and `path_to_node_json` are all declared
// here, outside the function.)
arr.forEach(function(nodename) {
    var xhr; // <=== Local variable in this specific call to the iteration
             // function, value isn't changed by subsequent iterations
    node_json=path_to_node_json+nodename;
    html +='<a href="'+node_json+'" target="_blank" id="host_'+nodename+'">data</a></td>'
        +'</tr>';
    xhr = $.ajax({
        url: node_json,
        success: function(response) {
            // Note: You haven't used it here, but just to emphasize: If
            // you used `node_json` here, it would have its value as of
            // the *end* of the loop, because it's not local to this
            // function. But `xhr` is local, and so it isn't changed on
            // subsequent iterations.
            $('#host_'+nodename).append("last modified: " + xhr.getResponseHeader("Last-Modified"));
        }
    });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用javascript获取文件的修改时间戳

来自分类Dev

使用ADB获取文件的最后修改时间戳

来自分类Dev

stat:文件的修改时间戳

来自分类Dev

文件的时间戳,修改时间和创建时间

来自分类Dev

文件的时间戳,修改时间和创建时间

来自分类Dev

如何使用Python ftplib获取FTP文件的修改时间

来自分类Dev

UX修改时间戳

来自分类Dev

在Java中使用jimfs设置文件的最后修改时间戳

来自分类Dev

使用infile语句时如何获取文件的最后修改时间?

来自分类Dev

使用boost :: filesystem :: last_write_time获取锁定文件夹的修改时间

来自分类Dev

获取FTP服务器上文件的修改时间

来自分类Dev

如何跨平台获取文件的修改时间?

来自分类Dev

在POSIX Shell中获取文件修改时间

来自分类Dev

Rsync仅复制更改的文件;忽略文件修改时间戳

来自分类Dev

Python-无法使用ctime获取上次修改时间

来自分类Dev

Python-无法使用ctime获取上次修改时间

来自分类Dev

从Infinispan缓存中获取一个条目,而不会影响最后的修改时间戳

来自分类Dev

使用gulp复制文件,同时保留修改时间

来自分类Dev

使用修改时间创建文件夹列表

来自分类Dev

如何使用 | 打印文件的最后修改时间 在 BASH 中?

来自分类Dev

设置文件访问时间,修改时间

来自分类Dev

进行备份时使用目录的上次修改时间戳是否可靠?

来自分类Dev

如何使用Shell脚本为Jekyll网站获得可接受的最后修改时间戳?

来自分类Dev

如何使用sed正则表达式提取HTML并修改时间戳?

来自分类Dev

如何在不修改目录的修改时间戳的情况下将文件添加到目录?

来自分类Dev

如何使用touch设置文件的修改/创建的时间戳?

来自分类Dev

Linux-文件更改时间与修改时间

来自分类Dev

在discord.py中修改时间戳

来自分类Dev

“修改时间戳”通过剪切和粘贴更改

Related 相关文章

  1. 1

    使用javascript获取文件的修改时间戳

  2. 2

    使用ADB获取文件的最后修改时间戳

  3. 3

    stat:文件的修改时间戳

  4. 4

    文件的时间戳,修改时间和创建时间

  5. 5

    文件的时间戳,修改时间和创建时间

  6. 6

    如何使用Python ftplib获取FTP文件的修改时间

  7. 7

    UX修改时间戳

  8. 8

    在Java中使用jimfs设置文件的最后修改时间戳

  9. 9

    使用infile语句时如何获取文件的最后修改时间?

  10. 10

    使用boost :: filesystem :: last_write_time获取锁定文件夹的修改时间

  11. 11

    获取FTP服务器上文件的修改时间

  12. 12

    如何跨平台获取文件的修改时间?

  13. 13

    在POSIX Shell中获取文件修改时间

  14. 14

    Rsync仅复制更改的文件;忽略文件修改时间戳

  15. 15

    Python-无法使用ctime获取上次修改时间

  16. 16

    Python-无法使用ctime获取上次修改时间

  17. 17

    从Infinispan缓存中获取一个条目,而不会影响最后的修改时间戳

  18. 18

    使用gulp复制文件,同时保留修改时间

  19. 19

    使用修改时间创建文件夹列表

  20. 20

    如何使用 | 打印文件的最后修改时间 在 BASH 中?

  21. 21

    设置文件访问时间,修改时间

  22. 22

    进行备份时使用目录的上次修改时间戳是否可靠?

  23. 23

    如何使用Shell脚本为Jekyll网站获得可接受的最后修改时间戳?

  24. 24

    如何使用sed正则表达式提取HTML并修改时间戳?

  25. 25

    如何在不修改目录的修改时间戳的情况下将文件添加到目录?

  26. 26

    如何使用touch设置文件的修改/创建的时间戳?

  27. 27

    Linux-文件更改时间与修改时间

  28. 28

    在discord.py中修改时间戳

  29. 29

    “修改时间戳”通过剪切和粘贴更改

热门标签

归档