使用JavaScript将"%"发送到API

Bar*_*ski 1 javascript php ajax urlencode restful-url

在我们的RESTful API中,我们使用RQL来解析URL-s并从中构建查询.这是一个查询示例:

http://www.example.com/resource?resource.name~=%Some name%

转换为LIKE运营商.

然后,在我们的前端,我们实现了一个搜索字段,其中的更改触发ajax请求:

'http://www.example.com/resource?resource.name~=%' + query + '%'

当然,有一个错误 - 每个与"%"的特殊组合将服务器端转换为字符,导致查询返回没有结果.

怎么解决?

之后我尝试encodeURIComponent了所有的东西,?但它变得更糟,例如resource.name~%3D%25befr%25哪个"befr"作为查询字符串.

我没有其他想法如何解决这个问题.

Que*_*tin 8

查询字符串的组件是键名和值.

?key=value&key=value
Run Code Online (Sandbox Code Playgroud)

不要对=字符进行编码.它们不是组件的一部分,它们将组件分开.

var url = 'http://www.example.com/resource?' +
    encodeURIComponent("resource.name~") +
    "=" + 
    encodeURIComponent("%" + query + "%");
Run Code Online (Sandbox Code Playgroud)