Функция escape() была устарела и заменена на encodeURIComponent, но encodeURIComponent не кодирует символ одиночной кавычки/апострофа. Который мне нужно избегать апострофов в фамилии людей (например, "O'Neill" ) в форме AJAX. Почему они убирают способность чего-то, что они пытались улучшить?
ИЗМЕНИТЬ:
Итак, вот пример кода, чтобы более подробно объяснить проблему. Таким образом, вы можете увидеть фамилию "O'Neill", которая содержит апостроф, который должен быть экранирован при передаче переменной в URL-адресе. Но это также произойдет и в других местах в форме, например, если введенный адрес был "Билли Таверн".
<input id='surname' value="O'Neill">
<script>
var get_url = '?surname='+encodeURIComponent($('#surname').val());
$.ajax({
url: get_url
});
</script>
Мое текущее решение, используя пользовательскую функцию. Мой вопрос состоял в том, чтобы спросить, почему существует необходимость в пользовательской функции.
<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>