#php #javascript #ajax #special-characters #http-post
#php #javascript #ajax #специальные символы #http-post
Вопрос:
У меня возникла проблема, связанная с вводом специальных символов. Во-первых,
считается особым символом, не так ли? У меня есть поле в моей форме, которое должно содержать
. Однако, когда я отправляю его в свой PHP-скрипт с помощью AJAX и получаю доступ к переменной с помощью $_POST
,
она не отображается и, следовательно, не сохраняется в базе данных.
Пример:
// on the JavaScript side
value = 123;
paramPost = "name=abcamp;value=" value;
alert("paramPost = " paramPost);
// Output: parampost = name=abcamp;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);
… но это все равно не сработало.
Комментарии:
1. пожалуйста, очистите свой код и используйте теги кода. предполагается ли, что //parampost = name=abc amp;value = 123 будет закомментирован? это актуально?
2. я мало что знаю о php, но нет ли какого-нибудь способа избежать символов?
3. привет, matchew! спасибо, чувак, я уже нашел решение .. я просто записывал его для basis 🙂 я использую encodeURIComponent () и он работает нормально. спасибо за ответ 🙂
Ответ №1:
Является избыточным для числа; измените 123
на " 123"
.
Если ваша библиотека JavaScript не экранирует это, также сделайте encodeURIComponent(value)
вместо value
. Итак, ваш фиксированный код должен быть:
value = " 123";
paramPost = "name=abcamp;value=" encodeURIComponent(value);
// ..
ajax.doPost(paramPost);
Комментарии:
1. привет, minitech! большое спасибо! сейчас я использую encodeURIComponent (), и он выдает шестнадцатеричное значение для . большое спасибо! 😀
Ответ №2:
В javascript начальный ‘ ‘ перед числом указывает на то, что оно положительное. Чтобы отправить значение ‘ 1’ как часть параметра запроса URI, вам нужно его экранировать. Правильно экранированная версия ‘ 1’ будет:
+1
где + — шестнадцатеричное значение для ‘ ‘
Комментарии:
1. привет, Роб Райш!! большое спасибо за это! конечно, он должен иметь шестнадцатеричное значение для ‘ ‘. спасибо, чувак!