请教: 如何使用 Javascript 实现请求 api 并解析 json - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
Pzqqt
V2EX    Javascript

请教: 如何使用 Javascript 实现请求 api 并解析 json

  •  
  •   Pzqqt 2019-08-26 11:06:50 +08:00 7738 次点击
    这是一个创建于 2239 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题案例

    • 现有一个文件列表页面,打算在每个文件项后面添加一个按钮,点击之后代入文件名作为参数,调用 Javascript 函数请求 api,这个 api 将返回文件哈希值 大小 最后修改日期等信息,格式为 json,请求完成后解析 json 并反馈到页面上。

    在度娘上搜到了一些答案,不过都是使用 JQuery 实现的。请问有不使用 JQuery 实现的方法吗?

    30 条回复    2019-08-27 15:19:41 +08:00
    jowan
        1
    jowan  
       2019-08-26 11:11:11 +08:00
    不太明白你的意思 不就是为了请求 api 吗,不想用 jq 的话
    原生 xhr? axios?
    jorneyr
        2
    jorneyr  
       2019-08-26 11:11:19 +08:00
    1. 原生 JS 的 Ajax
    2. Axios
    3. Fetch
    sdxlh007
        3
    sdxlh007  
       2019-08-26 11:14:55 +08:00   1
    function ajax(url){
    var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : ActiveXObject("microsoft.XMLHttp")
    xhr.open("get",url,true);
    xhr.send();
    xhr.Onreadysattechange= () =>{
    if(xhr.readystate == 4){
    if(xhr.status == 200){
    var data = xhr.responseTEXT;
    return data;
    }
    }
    }
    }
    lovedebug
        4
    lovedebug  
       2019-08-26 11:16:25 +08:00
    很多异步请求库可以直接加载到页面使用的。
    Sapp
        5
    Sapp  
       2019-08-26 11:36:37 +08:00
    吓得我看了下时间...
    这不就是现在各种前端渲染的 UI 框架的正常操作么? ajax 发送一下请求,回来之后解析不就行了么?
    Hoshinokozo
        6
    Hoshinokozo  
       2019-08-26 11:46:41 +08:00
    jq 只是对 xhr 封装了一下而已,底层还是 xhr,楼主可能需要学习一下 AJAX 方面的知识
    1brother
        7
    1brother  
       2019-08-26 12:16:11 +08:00
    Ajax 了解一下
    SuperMild
        8
    SuperMild  
       2019-08-26 12:27:31 +08:00
    这个就是你想要的 http://vanilla-js.com
    wszgrcy
        9
    wszgrcy  
       2019-08-26 12:34:07 +08:00 via Android   5
    触发关键词 api,json,等待那个人出现
    agdhole
        10
    agdhole  
       2019-08-26 12:35:25 +08:00
    FetchAPI
    Axios
    akiakiseofficial
        11
    akiakiseofficial  
       2019-08-26 12:37:57 +08:00 via Android   1
    @wszgrcy 那个男人要出现了吗?
    ipwx
        12
    ipwx  
       2019-08-26 12:52:17 +08:00 via Android   1
    那一天,v 友再一次回想起了被辣个男人所支配的恐怖…
    sparkle2015
        13
    sparkle2015  
       2019-08-26 13:17:52 +08:00
    ```
    fetch(url)
    .then(res => res.json())
    .then(data => console.log(data)
    ```
    IsaacYoung
        14
    IsaacYoung  
       2019-08-26 13:34:50 +08:00 via iPhone
    迟但到
    xrr2016
        15
    xrr2016  
       2019-08-26 14:04:35 +08:00   2
    API JSON 这标签简直就是为那个男人定制的啊
    SilentDepth
        16
    SilentDepth  
       2019-08-26 14:08:41 +08:00
    dumbass
        17
    dumbass  
       2019-08-26 14:13:07 +08:00
    @SuperMild #8 我还认真的看了一遍,甚至点击了下载按钮,直到看到后面才笑出声。文档连接到 mdn 太真实了。
    SuperMild
        18
    SuperMild  
       2019-08-26 15:33:11 +08:00
    @bojackhorseman 我当初也是这样哈哈哈哈。不过这确实是个不错的学习材料,可以看看原生 js 怎么弄,随着 ES 版本不断提升,很多操作用原生写也不算很麻烦了。
    SuperMild
        19
    SuperMild  
       2019-08-26 15:37:43 +08:00
    @bojackhorseman 我搞错了,#16 那个网站才是学习材料。
    catch
        20
    catch  
       2019-08-26 15:38:52 +08:00 via iPhone
    mdn
    luzemin
        21
    luzemin  
       2019-08-26 18:06:05 +08:00
    arrayJY
        22
    arrayJY  
       2019-08-26 18:35:15 +08:00
    @ipwx 那个男人是哪个?
    findmyself
        23
    findmyself  
       2019-08-26 18:36:52 +08:00
    好久没看到辣个男人了
    StarkWhite
        24
    StarkWhite  
       2019-08-26 21:31:26 +08:00
    @arrayJY 你搜一下 apijson 就知道了
    mrcotter2013
        25
    mrcotter2013  
       2019-08-26 21:51:33 +08:00 via Android
    Axios 很好用
    JJstyle
        26
    JJstyle  
       2019-08-26 21:58:37 +08:00 via iPhone
    哈哈哈,那个男人,,只有经常逛 v 站的才知道这是什么梗吧
    araraloren
        27
    araraloren  
       2019-08-27 08:35:25 +08:00
    我还以为你们说的是 MingGeJs,一个更加神奇的男人。。
    rocy
        28
    rocy  
       2019-08-27 08:58:13 +08:00
    那个男人应该不会出现了 站长把他处理了
    Pzqqt
        29
    Pzqqt  
    OP
       2019-08-27 10:10:05 +08:00
    @sdxlh007 非常感谢你的回答,原来我只需要一个 XMLHttpRequest 方法而已。其实我是一个初学者,刚接触 web 框架不到三个月,目前在使用 Flask 框架,编写了一个简单的博客放到了服务器上,博客大部分都是静态页面,需要用到 Javascript 也是现学现用。总之还是非常感谢你能回答我这个愚蠢的问题。
    目前问题已经解决了,这是我编写好的博客后台文件管理界面,点击文件名前的图标即可显示文件的哈希信息。
    http://148.70.149.207/uploads
    wayneshen
        30
    wayneshen  
       2019-08-27 15:19:41 +08:00
    axios+1
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2715 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 344ms UTC 09:03 PVG 17:03 LAX 02:03 JFK 05:03
    Do have faith in what you're doing.
    ubao 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