Потеря символов при передаче через Post

  • Автор темы Guest
  • Дата начала
G

Guest

#1
В PHP новичок, пишу относительно недавно.

Надо передать строку из текстового поля через Ajax в PHP для занесения её в базу.
Строка имеет вид: "Сколько будет 2+2?" . Банально, но тут то и проблема.
Alert в функции выводит строку как надо, то есть "Сколько будет 2+2?"

Ajax:

Код:
function save_(id_quest,id_text)
{	alert(document.getElementById(id_text).value);
$.ajax({
type: 'POST',
url: 'save_question.php',
data: 'quest_id='+document.getElementById(id_quest).value +
'&quest_text=\''+document.getElementById(id_text).value+'\'',
success: function(html)
{
$('#answer').html(html);
}
});
}

В PHP-скрипт методом POST строка приходит вот такая: "Сколько будет 2 2?". :)

Символа "+" нет.

Куда он делся, почему это происходит и как это исправить/обойти ?
 
G

Guest

#3
Код:
function save_(id_quest,id_text)
{	alert(document.getElementById(id_text).value);
$.ajax({
type: 'POST',
url: 'save_question.php',
data: 'quest_id='+document.getElementById(id_quest).value +
'&quest_text='+escape(document.getElementById(id_text).value),
success: function(html)
{
$('#answer').html(html);
}
});
}

в итоге получил строку u0421 u043A u043E u043B u044C u043A u043E %u0431%u0443%u0434%u0435%u0442 2 2?;

Плюса как не было, так и нет.
 

hosm

* so what *
18.05.2009
2 442
6
#4
энкодить + надо, можно так encodeURIcomponent(document.getElementById(id_text).value) и потом декодить аналогично.
 
G

Guest

#5
как вариант. А почему теряется символ "+" при POST'e и какие ещё символы могут быть утеряны?
 

hosm

* so what *
18.05.2009
2 442
6
#6
ну, вроде только инглиш алфавитный и цифры обычно без проблем передаются. "вроде" говорю, потому что не пхпшник))))
мне лень сейчас искать ссылки на стандарты и т.п., вот тут где-то они упоминаются, погуглите.
например, вот такой полезный запрос<style type="text/css">@import url(http://www.google.com/cse/api/branding.css);</style><div class="cse-branding-bottom" style="background-color:#FFFFFF;color:#000000"> <div class="cse-branding-form"> <form action="http://www.google.ru/cse" id="cse-search-box" target="_blank"> <div> <input type="hidden" name="cx" value="partner-pub-9522070088145711:itpxzrl8xir" /> <input type="hidden" name="ie" value="windows-1251" /> <input type="text" value="encodeuricomponent php" name="q" size="31" /> <input type="submit" name="sa" value="Поиск" /> </div> </form> </div> <div class="cse-branding-logo">
</div> <div class="cse-branding-text"> Найдется все!   </div></div>
будет восприниматься как http://www.google.com/search?q=encodeuricomponent+php