+dấu hiệu có một ý nghĩa ngữ nghĩa trong chuỗi truy vấn. Nó được sử dụng để đại diện cho một không gian. Một ký tự khác có tầm quan trọng về ngữ nghĩa trong chuỗi truy vấn &được sử dụng để phân tách các var=valuecặp khác nhau trong chuỗi truy vấn.
Hầu hết các tập lệnh phía máy chủ sẽ giải mã các tham số truy vấn trước khi sử dụng chúng, để một +được chuyển đổi đúng cách thành một khoảng trắng. Bây giờ, nếu bạn muốn một ký tự +xuất hiện trong chuỗi truy vấn, bạn cần chỉ định %2Bthay thế.
+đăng nhập chuỗi truy vấn được giải mã URL thành một khoảng trắng. %2Btrong chuỗi truy vấn được giải mã URL thành dấu +.
Xem sự khác biệt giữa
http://www.google.com/search?q=foo+bar
và
http://www.google.com/search?q=foo%2Bbar
Trong các ví dụ trên, tập lệnh máy chủ của Google là giải mã URL các tham số truy vấn và sau đó sử dụng chúng để thực hiện tìm kiếm.
Mã hóa URL không là gì ngoài %ký hiệu theo sau là mã hex của ký tự đặc biệt. Ví dụ, chúng ta biết rằng mã hex của Alà 0x41 (thập phân: 65). Thử cái này:
http://www.google.com/search?q=%41
Hy vọng điều này làm cho mã hóa URL rõ ràng.
Vì vậy, nếu bạn muốn +dấu hiệu được giữ nguyên khi JavaScript đang tìm nạp một URL với +các dấu hiệu trong tham số truy vấn của nó và tập lệnh phía máy chủ sẽ xử lý các tham số truy vấn sau khi giải mã URL, bạn nên mã hóa URL các tham số truy vấn trong URL trước khi sử dụng phát hành yêu cầu nhận HTTP để tất cả các +dấu hiệu được chuyển đổi thành %2B's khi yêu cầu đến tập lệnh phía máy chủ. Bây giờ khi URL của tập lệnh phía máy chủ-giải mã chuỗi truy vấn, tất cả %2Bsẽ được chuyển đổi trở lại +các dấu hiệu mà bạn muốn.
Xem Mã hóa URL trong JavaScript? để tìm hiểu cách mã hóa URL bằng cách sử dụng JavaScript. Câu trả lời ngắn gọn từ cuộc thảo luận ở đó:
var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);