[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как передать спецсимволы через POST
seine
Присказка
Не знал как правильно назвать, может это не спецсимволы называются. Всякие градус, умножить (крестик, как буква х), степень и т.д.

Сказка
Суть вот в чем: клиент отправляет какой-то текст методом POST (через Ajax), например Д×Ш×В. FireBug говорит, что POSTом ушло "Д×Ш×В", пока что все как надо.
Но на стороне сервера, в $_POST['letexte'] содержится только "Д", т.е. до первого спецсимвола доходит и заканчивается текст.
Этот крестик кодируется так: × это нормально, что запрос передается не в виде Д×Ш×В, а в виде Д×Ш×В?
Не могу понять, где искать проблему? Ведь запрос уходит вроде правильно, но доходит неправильно.
Скорей всего на стороне клиента, надо менять × на ×. Как можно это сделать, бо в JS не силен, пока :-)



Спустя 3 минуты, 16 секунд (11.01.2010 - 17:42) Gabriel написал(а):
DIII
а может код в покажеш? ибо как-то кофейно на теории сложновато

Спустя 16 минут, 22 секунды (11.01.2010 - 17:59) seine написал(а):
Когда клиент нажиМает на кнопку сохранить, то выполняется код (JS)


function edit_content(content, id) {
sendcontent = encodeURIComponent(content);

var url = 'index.php?mode=content&from=ajax&editPage=edit'; //куда слать
var data = 'id=' + id + '&cont=' + sendcontent; //что слать

//тут все стандартно

xmlHttpSave = create_ajax();
xmlHttpSave.open('POST', url, true);
xmlHttpSave.onreadystatechange = update_content;
xmlHttpSave.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;');
xmlHttpSave.send(data);

}



Пользователь ввел текст Д×Ш×В и нажал сохранить. Смотрим, что показывает firebug:
cont <p>Д×Ш×В</p>
id 109

И вот кусок скрипта на сервере, функция, которая получает введенный тект


private function EditBase()
{
print 'content is "'.$_POST['cont'].'"';
}


В итоге видим:

content is "<p>Д"

что-то меня сильно смущает, что передается в виде Д×Ш×В, вместо ожидамемого Д&time;Ш&time;В

может вместо encodeURIComponent что-то другое использовать (escape например)

Спустя 6 минут, 53 секунды (11.01.2010 - 18:06) sergeiss написал(а):
Ты видишь текст

content is "<p>Д"

на экране. А ты еще посмотри, что у тебя на самом деле там, т.е. посмотри код страницы. Там ты увидишь все символы, как они были переданы браузеру.

Спустя 3 часа, 45 минут, 25 секунд (11.01.2010 - 21:51) seine написал(а):
Ну, на самом деле я и текста не вижу :-) это я образно так написал, аякс же запрос идет; вместо print я в файл сохраняю, т.е. эта строчка появляется в файле content.txt.
Но суть в том, что в $_POST['cont'] содержится не весь переданные текст.

Спустя 37 минут, 3 секунды (11.01.2010 - 22:28) Ded_Mazay написал(а):
DIII сори за тупой вопрос, но не проще ли сделать 3 поля ввода данных? типо |_| x |_| x |_| тогда и символы не нужны. а потом для записи в файл поставить $_POST['d'] x $_POST['w'] x $_POST['v'] ?

Спустя 12 минут, 34 секунды (11.01.2010 - 22:41) Gabriel написал(а):
наверное не проще ибо там наверное могут быть разные спец символы

Спустя 10 часов, 39 минут, 58 секунд (12.01.2010 - 09:21) seine написал(а):
Цитата (Gabriel @ 11.01.2010 - 19:41)
ибо там наверное могут быть разные спец символы

Да, именно так, это просто пример был с Д В Ш, а вообще там любой текст идет.
Ну ребят, неужели никто не знает, как преобразовывать специмволы в HTML-эквиваленты? Должна же быть какая-нибудь функция в JS. Или такими возможностями он не обладает?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.