V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
gonethen
V2EX  ›  问与答

前端小白求关于请求参数包含特殊符号(如"%")会报错的解决办法。

  •  
  •   gonethen · 2021-03-26 11:13:57 +08:00 · 1833 次点击
    这是一个创建于 1120 天前的主题,其中的信息可能已经有所发展或是发生改变。

    关键字 vue/axios/element-ui

    团队遇到了传参报 400 的问题,初步断定是因为参数某个字段含有中文和"%"导致。因为不带"%"就不会报 400 错误。

    使用了 post 请求。

    11 条回复    2021-03-26 15:08:30 +08:00
    Perry
        1
    Perry  
       2021-03-26 11:14:47 +08:00
    encoding 做好了就不会有这问题
    ayase252
        2
    ayase252  
       2021-03-26 11:15:12 +08:00 via iPhone
    urlencode
    ayase252
        3
    ayase252  
       2021-03-26 11:17:33 +08:00 via iPhone
    我没审好题,我的锅。

    如果参数在 URL 上,确保传出去的时候 URLEncode 一遍,那边再 decode 。
    在 Body 中的应该不用,按约定来
    wenzichel
        4
    wenzichel  
       2021-03-26 11:26:38 +08:00
    所有的参数均`encodeURIComponent`再传给后端接口!
    zhlssg
        5
    zhlssg  
       2021-03-26 11:35:17 +08:00
    现在 get 请求如果有中文是会自己转换的吧
    gonethen
        6
    gonethen  
    OP
       2021-03-26 11:40:44 +08:00
    @ayase252 #3 [![6j3478.png]( https://z3.ax1x.com/2021/03/26/6j3478.png)]( https://imgtu.com/i/6j3478)
    这样算是已经 urlencode 了吧?
    mhycy
        7
    mhycy  
       2021-03-26 11:47:13 +08:00
    % 需要转义成 %25,你的请求里面出现了两个%
    gonethen
        8
    gonethen  
    OP
       2021-03-26 11:53:48 +08:00
    @wenzichel #4 axios.post 接受的是一个对象,encodeURIComponent 却需要传递一个字符串,该怎么用呢? qs.stringify?
    eason1874
        9
    eason1874  
       2021-03-26 12:02:09 +08:00
    encodeURI 和 encodeURIComponent 都会转义 % ,可以正常传入 "测试%和 9"

    你截图里显示没有转义,明显不是这两个其中一个的转义结果,应该是经过了其他处理,检查下吧。
    wenzichel
        10
    wenzichel  
       2021-03-26 13:29:20 +08:00
    @gonethen #8 是的
    ysc3839
        11
    ysc3839  
       2021-03-26 15:08:30 +08:00
    发代码看看吧,估计是你写的有问题。自己试了下,使用 axios 的 params 参数是不需要自己 encodeURI 的,会自动处理好。
    https://jsfiddle.net/w6e75ydu/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   923 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:45 · PVG 04:45 · LAX 13:45 · JFK 16:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.