побег() функция устарела и заменяется encodeURIComponent но encodeURIComponent не кодирует одинарную кавычку/апостроф. Который мне нужно избегать апострофов в фамилии людей (например, «O'Neill») в форме AJAX. Почему они убрали способность чего-то, что они пытались улучшить?Почему encodeURIComponent не кодирует одинарные кавычки/апострофы?
EDIT:
Так вот пример кода, чтобы объяснить эту проблему более подробно. Таким образом, вы можете увидеть фамилию «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>
Зачем вам нужно избегать апострофов? Если ваша конкретная потребность только в этом, просто замените. –
Для чего им нужно бежать? – Bergi
'encodeURIComponent' не кодирует символы' '', потому что символы '' 'не должны кодироваться в URI. – Quentin