2010-02-08 40 views
10

Tôi đang cố chuyển một chuỗi qua yêu cầu HTTP có một ký tự là % trong chuỗi truy vấn URL.Cách chuyển% trong chuỗi truy vấn URL?

url = url + "?q=" + str + "&block=" + block; // str contains the '%' character 

Nhưng trên trang ColdFusion nơi tôi đang gửi thông tin này đang trở lại báo lỗi sau:

Element Q is undefined in URL.

Làm thế nào tôi có thể mã hóa các % đăng nhập một URL?

Trả lời

12

Bạn nên URL mã hóa tất cả các giá trị bạn đang đi qua như tham số truy vấn, nhưng url-mã hóa cho% là %25

Cập nhật: nếu bạn đang xây dựng các thông số truy vấn trong javascript, có thể bạn muốn làm:

url=url+"?q="+encodeURIComponent(str)+"&block="+encodeURIComponent(block) 

(. Cập nhật lần nữa với gợi ý rất hữu ích ZeissS' để sử dụng encodeURIComponent thay vì escape Xem thêm http://xkr.us/articles/javascript/encode-compare/)

+1

Bạn nên sử dụng 'encodeURIComponent()', vì bạn đang thoát một thành phần duy nhất của URL. – ZeissS

+0

cảm ơn rất nhiều công việc của nó bây giờ :) –

9

Vượt qua chuỗi của bạn trough chức năng encodeURI(...) nó sẽ thoát khỏi tất cả các ký tự đặc biệt không chỉ là%

+0

Cảm ơn rất nhiều !!! encodeURI() là một trợ giúp tuyệt vời .. –

+0

Cũng xem xét 'encodeURIComponent', như được chỉ ra trong câu trả lời của Brad G. dưới đây. 'encodeURI' không mã hóa một số ký tự mà * nên * được mã hóa trong một trường hợp như thế này. Một ký tự nó không mã hóa, như một ví dụ tầm thường về lý do tại sao nó có khả năng xấu ở đây, là '&'. –

+0

@pst Nhưng nếu bạn muốn chuyển các tham số trong chuỗi truy vấn thì tại sao muốn thoát khỏi & tách riêng các tham số? – Mic

3

URLEncodedFormat() trong ColdFusion

+0

Cảm ơn bạn đã dành thời gian. Tôi có thể sử dụng URLEncodedFormat() trong khi đang chèn dữ liệu vào cơ sở dữ liệu Oracle không? –

+0

chắc chắn, nhưng bạn phải tự hỏi mình nếu đó thực sự là những gì bạn muốn làm. – Henry

-2

Chúng ta có thể sử dụng URLEncodedFormat() trong ColdFusion cũng như chúng ta có thể sử dụng một đề cập dưới đây.

  • encodeURI (...)
  • encodeURIComponent

này hai cũng giúp chúng ta giải quyết vấn đề của chúng tôi.

Các vấn đề liên quan