Các thoát() chức năng, đã phản đối và thay thế bằng encodeURIComponent nhưng encodeURIComponent không mã hóa đơn nhân vật báo/dấu nháy đơn. Tôi cần phải thoát khỏi các dấu nháy đơn trong họ của một người (ví dụ: 'O'Neill') dưới dạng AJAX. Tại sao họ sẽ loại bỏ khả năng của một cái gì đó mà họ đang cố gắng cải thiện?Tại sao encodeURIComponent không mã hóa dấu nháy đơn/dấu nháy đơn?
EDIT:
Vì vậy, đây là ví dụ về mã để giải thích vấn đề kỹ lưỡng hơn. Vì vậy, như bạn có thể thấy họ 'O'Neill' chứa một dấu nháy đơn cần phải được thoát khi chuyển biến trong url. Nhưng điều này cũng sẽ xảy ra ở những nơi khác trong biểu mẫu, ví dụ nếu một địa chỉ được nhập là 'Billy's Tavern'.
<input id='surname' value="O'Neill">
<script>
var get_url = '?surname='+encodeURIComponent($('#surname').val());
$.ajax({
url: get_url
});
</script>
Giải pháp hiện tại của tôi, sử dụng chức năng tùy chỉnh. Câu hỏi của tôi chỉ là hỏi tại sao có nhu cầu cho một chức năng tùy chỉnh.
<script>
function customEncodeURIComponent(URI) {
return encodeURIComponent(URI).replace(/'/g, "%27");
}
</script>
<input id='surname' value="O'Neill">
<script>
var get_url = '?surname='+customEncodeURIComponent($('#surname').val());
$.ajax({
url: get_url
});
</script>
Tại sao bạn cần thoát khỏi dấu nháy đơn? Nếu nhu cầu cụ thể của bạn chỉ là vậy, chỉ cần thay thế. –
Những gì họ cần phải được thoát cho? – Bergi
'encodeURIComponent' không mã hóa' ''ký tự bởi vì'' 'ký tự không cần phải được mã hóa trong URI. – Quentin