请问纯静态网页有什么办法读取目录下的 csv 文件吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Aoitechs
V2EX    问与答

请问纯静态网页有什么办法读取目录下的 csv 文件吗?

  •  a href="Javascript:" Onclick="downVoteTopic(519990);" class="vote">
  •   Aoitechs 2018-12-22 13:59:02 +08:00 2888 次点击
    这是一个创建于 2571 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在用 html+css+js 编写了一个静态的相册网站,但是想要在加载网页的时候即时的从网站文件根目录下读取一个 csv 配置文件(里面有图片的文件名、描述等信息),然后即时加载到网站的 body 里面,以实现只需要修改资源文件夹就可以动态更新网页。 不知道有没有办法,把 html 同目录下的 csv 文件读取进入 js 脚本?跪谢

    lhx2008
        1
    lhx2008  
       2018-12-22 14:02:03 +08:00 via Android
    可以读进来,没问题,但是代码没人帮你免费写了
    lhx2008
        2
    lhx2008  
       2018-12-22 14:02:25 +08:00 via Android
    发一个 ajax 请求就读进来了
    learnshare
        3
    learnshare  
       2018-12-22 14:02:58 +08:00
    每次更新完文件,gulp 或 webpack 构建一下,输出为包含内容的 HTML 即可
    kY8mbXW833Lu28xn
        4
    kY8mbXW833Lu28xn  
       2018-12-22 14:04:16 +08:00 via Android
    可以,js 可以做到这个功能,Google 一下,很多的案例
    Aoitechs
        5
    Aoitechs  
    OP
       2018-12-22 14:46:33 +08:00
    @lhx2008 ajax 请求是异步的,读取完之后 覆盖更新 div 就会导致其他的样式 js 不生效,如果改成同步的 ajax,会导致一直有一个 warning
    Aoitechs
        6
    Aoitechs  
    OP
       2018-12-22 14:47:26 +08:00
    @learnshare 有没有不需要二次构建的办法呢,因为做出来的相册想提供给别人用 最好就是可以只是上传图片 和修改 csv,网站刷新一下就变了那种
    learnshare
        7
    learnshare  
       2018-12-22 15:17:56 +08:00
    @Aoitechs JS 不生效,是 JS 事件处理做的不太对。
    关键词:事件委托 或者 https://api.jquery.com/on/
    hoyixi
        8
    hoyixi  
       2018-12-22 15:41:44 +08:00
    @Aoitechs #6

    定好 csv 目录路径,定好 csv 结构,只需要构建一次,构建完成后的那个 js 文件,扔给你的客户,以后他只要按照要求放正确的 csv 即可。
    Arnie97
        9
    Arnie97  
       2018-12-22 16:32:49 +08:00 via Android
    正好我做过类似的功能 https://github.com/evanplaice/jquery-csv
    Aoitechs
        10
    Aoitechs  
    OP
       2018-12-22 18:40:30 +08:00
    @Arnie97 emmmmm 我的问题不在于处理 csv,而是怎么能把 csv 读进来。。。
    hoyixi
        11
    hoyixi  
       2018-12-22 19:15:32 +08:00
    @Aoitechs

    不想用非 DOM API,不想用构建工具的话,最简单的方法就是不用 csv,用 json 文件,ajax 加载。
    Aoitechs
        12
    Aoitechs  
    OP
       2018-12-22 19:34:18 +08:00
    @hoyixi ajax 加载 json 和 加载 csv 实质上差不多吧?主要目前异步 ajax 会出现别的问题(#5 )

    或者说 有什么办法可以让静态网站读取一个同目录下的配置文件(不管是 json or csv ),然后作为一个参数参与到 js 后续的处理(主要是循环)中呢?
    hoyixi
        13
    hoyixi  
       2018-12-22 20:02:04 +08:00   1
    @Aoitechs

    是得,ajax 加载 json 和 加载 csv 实质上一样,但是加载 json 不用再自己写或者引入专门解析 csv 的 js 代码了;

    “异步 ajax 会出现别的问题”,感觉你好像是想在不改原有代码的基础上修补。但是很多情况不改是不可能的。你没贴代码,也没有实例,别人也没法明白你这个问题。

    你静态页面里的 js 是在网页访问者的浏览器里运行的,要想读你服务器磁盘里的文件,除非通过 HTTP 请求文件方式,例如 ajax。
    night98
        14
    night98  
       2018-12-22 20:20:48 +08:00 via Android
    d3.js 好像有直接加载 csv 的方法
    MonoLogueChi
        15
    MonoLogueChi  
       2018-12-22 20:26:42 +08:00 via Android
    所以说,你的问题不是怎么读取,而是怎么渲染?
    Aoitechs
        16
    Aoitechs  
    OP
       2018-12-22 20:37:30 +08:00
    感谢 @hoyixi 和 @learnshare 提供的思路 现在找到合适的解决方案了
    pynix
        17
    pynix  
       2018-12-22 21:58:43 +08:00
    JS 就行了吧。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5544 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 06:30 PVG 14:30 LAX 22:30 JFK 01:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86