- если для передачи данных на сервер используется AJAX(JSON)
и передается многострочное поле <textarea>
<script Language="JavaScript">
function savecomm(id){
sn='name'+id;
name=document.getElementById(sn).value;
sd='description'+id;
description=document.getElementById(sd).value;
jQuery.post('savecomment.php', {id:id,name:name,description:description},function(data){
if (data){
.....
}
},'JSON');
}
</script>
то в скрипте обработки формы savecomment.php
<?php
if(@$_POST['id']){
$description = $_POST['description'];
$description=iconv('utf-8','windows-1251',$description);
// $description =nl2br(htmlspecialchars($description )); // работает для json c UTF8
if(substr(PHP_OS,0,3)=='WIN') $n="\r\n"; else $n="\n";
$description =str_replace($n,'<br>',$description );
}
?>
не отрабатывает
$description =str_replace($n,'<br>',$description );
т.е. символы перевода каретки не заменяются на <br>,
т.е. при передаче через JSON с символами перевода каретки что-то происходит.
JSON нужен т.к. сайт и база Mysql используют windows-1251.
Спустя 1 час, 39 минут, 16 секунд (26.09.2011 - 13:35) Michael написал(а):
1) iconv ты неверно используешь. С какой на какую кодировку.
2) посмотри json_encode
2) посмотри json_encode
Спустя 33 минуты, 53 секунды (26.09.2011 - 14:08) mshdn написал(а):
перекодировка $description=iconv('utf-8','windows-1251',$description);
не влияет,
$description = $_POST['description']; - здесь уже что-то не так, т.е. при JSON - передаче
не влияет,
$description = $_POST['description']; - здесь уже что-то не так, т.е. при JSON - передаче
Спустя 17 минут, 30 секунд (26.09.2011 - 14:26) Michael написал(а):
Пиши:
$description=iconv('windows-1251', 'utf-8', $description)
Спустя 19 минут, 16 секунд (26.09.2011 - 14:45) killer8080 написал(а):
Цитата (mshdn @ 26.09.2011 - 14:08) |
$description = $_POST['description']; - здесь уже что-то не так, т.е. при JSON - передаче |
А причём здесь JSON? Передача идёт post запросом, а json - это формат в котором сервер должен ответить на этот запрос.