escape()函数已弃用并由encodeURIComponent代替,但encodeURIComponent不编码单引号/撇号字符。我需要以 AJAX 形式转义一个人的姓氏(例如'O'Neill')中的撇号。他们为什么要删除他们试图改进的东西的能力?
编辑:
所以这里有一个代码示例来更彻底地解释这个问题。如您所见,姓氏“O'Neill”包含一个撇号,在传递 url 中的变量时需要对其进行转义。但这也会发生在表单的其他地方,例如,如果输入的地址是“Billy's Tavern”。
<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>