Специальный символ в запросе AJAX - PullRequest
0 голосов
/ 09 июня 2011

У меня проблема с вводом специальных символов.Во-первых, + считается специальным символом, верно?В моей форме есть поле, которое должно содержать +.Однако, когда я отправляю его в свой PHP-скрипт с использованием AJAX и обращаюсь к переменной с помощью $_POST, + не отображается и, следовательно, не сохраняется в базе данных.

Пример:

// on the JavaScript side
value = +123;
paramPost = "name=abc&value=" + value;
alert("paramPost = " + paramPost);
// Output: parampost = name=abc&value=123
// The + is gone!
// Also, when I change value to a string, the + is still there,
// but when PHP receives it, it's gone.
ajax.doPost(paramPost);  
// on the PHP side
$val = $_POST['value'];
echo "val = $val";
// Output: 123
// The + is no longer there!

Что я могу сделать, чтобы это исправить?

Я пытался это сделать:

$val = htmlspecialchars($_POST['value'], ENT_QUOTES);

... но все равно не сработало.

Ответы [ 2 ]

3 голосов
/ 09 июня 2011

A + является избыточным для числа; изменить +123 на "+123".

Если ваша библиотека JavaScript не избежит этого, также сделайте encodeURIComponent(value) вместо value. Итак, ваш фиксированный код должен быть:

value = "+123";
paramPost = "name=abc&value=" + encodeURIComponent(value); 

// ..

ajax.doPost(paramPost);
0 голосов
/ 09 июня 2011

В javascript ведущий «+» перед числом указывает, что он положительный.Чтобы отправить значение «+1» как часть параметра запроса URI, вам нужно его экранировать.Правильно экранированная версия '+1' будет выглядеть так:

%2B1

, где% 2B - это значение HEX для '+'

...