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>