Encoding/Escaping URL GET 请求的空间 JavaScript
Encoding/Escaping Spaces for URL GET Request JavaScript
我目前正在尝试处理系统中的一个错误,我查询数据库的 GET 请求无法处理 spaces。我在 JavaScript 中的 GET 请求看起来是这样的,我 100% 确定适用于没有 spaces 的情况:
let values = JSON.parse(ajax().sync().get(url));
有关错误的示例,请采用以下 URL:
localhost:8000/database/data?id_one=one&id_two=one hundred
显然,在 returns 中没有传递任何内容,因为我没有考虑 space。所以我然后尝试像这样用'%20'来逃避space:
localhost:8000/database/data?id_one=one&id_two=one%20hundred
但是,这仍然没有返回任何内容,正如我在服务器端看到的那样,它正在将带有“%20”的 URL 作为文字传递到查询中;它在数据库中查询 'one%20hundred' 而不是 'one hundred'。我知道是因为服务器端的 'GET' 看起来像这样:
GET localhost:8000/database/data?id_one=one&id_two=one%20hundred 304 1.877 ms
如何转义这样的 space 以正确查询数据库?我试过使用“+”代替“%20”,但不幸的是,这也没有解决问题。
你考虑过解构请求服务器端吗?我假设您在 Express 中使用 Node.JS。如果是这种情况,请尝试删除 req.param.id_two
.
中的特殊字符(+ 和 %20)
我目前正在尝试处理系统中的一个错误,我查询数据库的 GET 请求无法处理 spaces。我在 JavaScript 中的 GET 请求看起来是这样的,我 100% 确定适用于没有 spaces 的情况:
let values = JSON.parse(ajax().sync().get(url));
有关错误的示例,请采用以下 URL:
localhost:8000/database/data?id_one=one&id_two=one hundred
显然,在 returns 中没有传递任何内容,因为我没有考虑 space。所以我然后尝试像这样用'%20'来逃避space:
localhost:8000/database/data?id_one=one&id_two=one%20hundred
但是,这仍然没有返回任何内容,正如我在服务器端看到的那样,它正在将带有“%20”的 URL 作为文字传递到查询中;它在数据库中查询 'one%20hundred' 而不是 'one hundred'。我知道是因为服务器端的 'GET' 看起来像这样:
GET localhost:8000/database/data?id_one=one&id_two=one%20hundred 304 1.877 ms
如何转义这样的 space 以正确查询数据库?我试过使用“+”代替“%20”,但不幸的是,这也没有解决问题。
你考虑过解构请求服务器端吗?我假设您在 Express 中使用 Node.JS。如果是这种情况,请尝试删除 req.param.id_two
.