Есть несколько символов, которые имеют особое значение. Некоторые из таких символов +,%, & et c. Символ «+» интерпретируется как пробел на стороне сервера. При использовании в полях формы он заменяется пробелами. При отправке запроса ajax вы легко можете увидеть, что «+» заменяется пробелом в консоли браузера.
Аналогичным образом символ «&» обрабатывается как разделитель между параметрами. Таким образом, если вы введете «sachin & 1» в текстовое поле, то значение, отправленное на сервер, будет «sachin», так как сервер будет считать, что он получил два параметра, «uname» и «1» со значением «uname», как «sachin» и значение «1» как ноль.
Решение
Для отправки специальных символов, таких как +,%, & et c., на сервер, они должны быть закодированы. Javascript предоставляет метод encodeURIComponent()
, который кодирует все специальные символы, присутствующие в передаваемой ему строке. Таким образом, в приведенном выше запросе ajax, если параметр «uname» отправляется как
data: "uname=" + encodeURIComponent($("#userName").val())
, то, если пользователь введет «sachin + 1», значение, полученное на сервере, будет таким же, то есть «+» не будет удален.