【问题标题】:Encoding/Escaping Spaces for URL GET Request JavaScriptURL GET 请求 JavaScript 的编码/转义空格
【发布时间】:2021-01-05 22:23:29
【问题描述】:

我目前正在尝试处理我的系统中的一个错误,即我的 GET 请求查询我的数据库无法处理空格。我在 JavaScript 中的 GET 请求看起来像这样,我 100% 肯定适用于没有空格的情况:

let values = JSON.parse(ajax().sync().get(url));
             

有关该错误的示例,请使用以下 URL:

localhost:8000/database/data?id_one=one&id_two=one hundred

显然,将其传入没有任何回报,因为我没有考虑空间。所以我然后尝试使用 '%20' 来逃避空间,如下所示:

localhost:8000/database/data?id_one=one&id_two=one%20hundred

但是,这仍然没有返回任何内容,正如我在服务器端看到的那样,它正在将带有 '%20' 作为文字的 URL 传递到查询中;它在数据库中查询“one%20hundred”而不是“100”。我可以说,因为服务器端的“GET”看起来像这样:

GET localhost:8000/database/data?id_one=one&id_two=one%20hundred 304 1.877 ms

如何转义这样的空间以正确查询数据库?我尝试使用 '+' 代替 '%20' 但不幸的是,这也没有解决它。

【问题讨论】:

    标签: javascript ajax url get request


    【解决方案1】:

    你有没有考虑解构请求服务器端?我假设您将 Node.JS 与 Express 一起使用。如果是这种情况,请尝试删除 req.param.id_two 中的特殊字符(+ 和 %20)。

    【讨论】:

    • 完美的答案,就像你说的那样,我试图在服务器端处理它。对于可能遇到相同问题的其他任何人,我都是这样处理的:req.param.id_two = req.param.id_two.replace(/%20/g,' ') (我在 .replace() 中使用正则表达式将 '%20' 的所有实例替换为空格)非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2013-04-21
    • 2014-03-25
    • 2013-06-13
    • 2013-11-15
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 2011-09-19
    相关资源
    最近更新 更多