Не знал как правильно назвать, может это не спецсимволы называются. Всякие градус, умножить (крестик, как буква х), степень и т.д.
Сказка
Суть вот в чем: клиент отправляет какой-то текст методом 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)
Пользователь ввел текст Д×Ш×В и нажал сохранить. Смотрим, что показывает firebug:
cont <p>Д×Ш×В</p>
id 109
И вот кусок скрипта на сервере, функция, которая получает введенный тект
В итоге видим:
content is "<p>Д"
что-то меня сильно смущает, что передается в виде Д×Ш×В, вместо ожидамемого Д&time;Ш&time;В
может вместо encodeURIComponent что-то другое использовать (escape например)
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>Д"
на экране. А ты еще посмотри, что у тебя на самом деле там, т.е. посмотри код страницы. Там ты увидишь все символы, как они были переданы браузеру.
content is "<p>Д"
на экране. А ты еще посмотри, что у тебя на самом деле там, т.е. посмотри код страницы. Там ты увидишь все символы, как они были переданы браузеру.
Спустя 3 часа, 45 минут, 25 секунд (11.01.2010 - 21:51) seine написал(а):
Ну, на самом деле я и текста не вижу :-) это я образно так написал, аякс же запрос идет; вместо print я в файл сохраняю, т.е. эта строчка появляется в файле content.txt.
Но суть в том, что в $_POST['cont'] содержится не весь переданные текст.
Но суть в том, что в $_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. Или такими возможностями он не обладает?