2014-12-09 3 views
1

우리의 RESTful API에서, 우리는 RQL을 사용하여 URL-s를 파싱하고 그것으로부터 쿼리를 빌드합니다. LIKE 연산자로 변환JavaScript로 "%"를 보내십시오.

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

: 이것은 질의의 예이다.

그런 다음, 우리의 프론트 엔드에, 우리는 변화에 아약스 요청 트리거있는 검색 필드 구현 : 물론

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

을, 버그가있다 - "%"각각의 특별한 조합됩니다 서버 쪽을 문자로 변환하여 쿼리 결과가 반환되지 않습니다.

어떻게 해결할 수 있습니까?

나는 ? 이후에 전체 내용을 시도했으나 더 나 빠졌다. 예를 들어 resource.name~%3D%25befr%25 "befr"이 쿼리 문자열이다.

이 문제를 해결하는 방법은 없습니다.

+0

당신이 직면하고있는 어떤 서버 측 버그 %를 교체하려고? 알려지지 않은 문제에 대한 해결책을 찾기가 어렵습니다. –

+0

팁! '~'대신에'<>'를 사용하고'%'를 추가하거나 트리밍해야합니까? – diEcho

+0

내가 말했듯이 ""% "와 (과) 특별한 조합은 서버 쪽을 문자로 변환하여 쿼리 결과가 반환되지 않습니다." 예를 들어, "b"로 시작하는 것을 검색하려고하면 '% b'를 포함하는 URL로 바뀝니다. 이것은 문자를 나타내는 특별한 조합입니다. –

답변

8

쿼리 문자열의 구성 요소는 키 이름과 값입니다.

?key=value&key=value 

= 문자는 인코딩하지 마십시오. 이들은 구성 요소의 일부가 아니며 구성 요소를 나눕니다.

var url = 'http://www.example.com/resource?' + 
    encodeURIComponent("resource.name~") + 
    "=" + 
    encodeURIComponent("%" + query + "%"); 
+0

예, 믿을 수 없지만, 이렇게 쉬운 일은 없었습니다. –

3

단순히 상당의 urlencoded를 "25 %"

+0

당신이 옳습니다. 그러나 하드 코딩 된 문자열 대신 함수를 사용하기 때문에 @Quentin의 솔루션이 더 좋습니다. 그러나 아직도이 팁을위한 하나 더하기. –

+0

이 특정 쿼리에는 작동하지만 (특수 문자가 없으므로) 일반적인 경우에는 좋지 않습니다. – Quentin

+0

맞습니다. 나는 @ Quentin의 대답을 upvoted. – eirasf

관련 문제