Лучший способ:
encodeURIComponent экранирует все символы, кроме следующих:alphabetic, decimal digits, - _ . ! ~ * ' ( )
Чтобы избежать неожиданных запросов к серверу, вы должны вызывать encodeURIComponent для любых введенных пользователем параметров, которые будут переданы как часть URI. Например, пользователь может ввести «Thyme & time = again» для комментария к переменной. Если вы не используете encodeURIComponent для этой переменной, вы получите комментарий = Thyme% 20 & time = снова. Обратите внимание, что амперсанд и знак равенства обозначают новую пару ключ и значение. Таким образом, вместо того, чтобы иметь ключ комментария POST, равный «Thyme & time = again», у вас есть два ключа POST, один из которых равен «Thyme», а другой (time) - снова.
Для application / x-www-form-urlencoded (POST), согласно http://www.w3.org/TR/html401/interac...m-content-type , пробелы должны быть заменены на «+», поэтому Можно выполнить замену encodeURIComponent с дополнительной заменой «% 20» на «+».
Если кто-то хочет быть более строгим в соблюдении RFC 3986 (который резервирует!, ', (,) И *), даже если эти символы не имеют формализованного использования с разделителями URI, можно безопасно использовать следующее:
function fixedEncodeURIComponent (str) {
return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
}
$.param
.