Специальный символ в запросе AJAX

#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. привет, Роб Райш!! большое спасибо за это! конечно, он должен иметь шестнадцатеричное значение для ‘ ‘. спасибо, чувак!