Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Странности с переносом строк
 
 автор: coloboc66   (30.11.2006 в 10:10)   письмо автору
 
 

Формирую ява-скриптом строку:
var str='str1'+"\n"+'str2'+"\n"+'str3'+"\n";
Перед отправкой просматриваю ее алертом: все нормально- переносы строк работают.
Отправляю ее на сервер аяксом:
my_req_ajax("send.php"+"?params="+str);
В файле send.php пишу echo $_GET['params'];
И получаю вот что: str1str2str3
Если пишу echo nl2br($_GET['params']);
то получаю то же самое:
str1str2str3
Куда деваются переносы строк? Ничего не понимаю...

   
 
 автор: elenaki   (30.11.2006 в 10:13)   письмо автору
 
   для: coloboc66   (30.11.2006 в 10:10)
 

их надо кодировать urlencode() - там ведь есть спецсимвол: обратный слеш

   
 
 автор: coloboc66   (30.11.2006 в 10:26)   письмо автору
 
   для: elenaki   (30.11.2006 в 10:13)
 

А каков синтаксис? Я пишу так:
var str=urlencode(str);
Выскакивает ошибка: "Предполагается наличие объекта"...

   
 
 автор: elenaki   (30.11.2006 в 10:39)   письмо автору
 
   для: coloboc66   (30.11.2006 в 10:26)
 

sorry. urlencode() - это PHP-шная функция. с JS надо как-то по-другому. а загнать \n в кавычки не получается? а если в кавычки загнать <br>?

   
 
 автор: coloboc66   (30.11.2006 в 10:46)   письмо автору
 
   для: elenaki   (30.11.2006 в 10:39)
 

В кавычки <br> загнать можно и все получится, но для безопасности мне нужно, чтобы клиент не мог вводить теги в поля.

   
 
 автор: tuder   (30.11.2006 в 10:39)   письмо автору
 
   для: coloboc66   (30.11.2006 в 10:26)
 

urlencode - это не из PHP случайно?

Попробуй так.

var str='str1'+"\\n"+'str2'+"\\n"+'str3'+"\\n";


Один слэш "съестся".

   
 
 автор: coloboc66   (30.11.2006 в 10:55)   письмо автору
 
   для: tuder   (30.11.2006 в 10:39)
 

Поставил перед n двойной слэш: "\\n"
Теперь при echo $_GET['params'] вижу:
str1\nstr2\nstr3\n
Но при echo nl2br($_GET['params']); вижу то же самое:
str1\nstr2\nstr3\n

   
 
 автор: elenaki   (30.11.2006 в 11:01)   письмо автору
 
   для: coloboc66   (30.11.2006 в 10:55)
 

а как насчет передавать много параметров: ?str1=...&str2=...&str3=..., а потом разбирать URL
и выводить эти переменные в том виде, который вас устраивает?

   
 
 автор: coloboc66   (30.11.2006 в 11:08)   письмо автору
 
   для: elenaki   (30.11.2006 в 11:01)
 

Не хочется перекраивать скрипт. Вот если закодировать строку на кириллице методом encodeURIComponent(), то переносы строк работают, но РНР-скрипт выводит строку в нечитаемом виде(кракозяблики). Наверно на серверной стороне нужно строку чем-то раскодировать, а чем?

   
 
 автор: Саня   (30.11.2006 в 11:11)   письмо автору
 
   для: coloboc66   (30.11.2006 в 11:08)
 

http://softtime.ru/forum/read.php?id_forum=4&id_theme=11146

   
 
 автор: coloboc66   (30.11.2006 в 11:16)   письмо автору
 
   для: Саня   (30.11.2006 в 11:11)
 

---

   
 
 автор: coloboc66   (30.11.2006 в 12:04)   письмо автору
 
   для: coloboc66   (30.11.2006 в 11:16)
 

В общем, чтоб долго не мучитья, сделал так: на клиентской стороне при формировании строки вместо "\n" везде поставил "|". А на серверной стороне при помощи str_replace просто меняю "|" на "<br>". Но остается непонятным вот что: в каких случаях при обработке кириллицы на серверной стороне (и на клиентской) возникают проблемы вообще? И отчего это зависит, может, от браузера? Я все скрипты пишу только под ИЕ, проблем с кириллицей при этом не имел никогда. Но вот когда-то написал на аяксе чат. Под ИЕ он работает без проблем, но ради любопытства попросил людей потестировать его с Оперы и их данные оказались нечитаемыми. Почему- я так и не понял.

   
 
 автор: elenaki   (30.11.2006 в 12:13)   письмо автору
 
   для: coloboc66   (30.11.2006 в 12:04)
 

я проблемы с нелатинскими кодировками решила заголовками. в том файле на PHP, который
формирует результаты запроса и передает их обратно в браузер, надо поставить хедеры:

header("Content-type: text/plain; charset=windows-1251");

там еще были про no-cashe, но я их убрала, без них лучше

   
 
 автор: coloboc66   (30.11.2006 в 12:24)   письмо автору
 
   для: elenaki   (30.11.2006 в 12:13)
 

Что означает text/plain ? У меня стоит text/html

   
 
 автор: Саня   (30.11.2006 в 13:17)   письмо автору
 
   для: coloboc66   (30.11.2006 в 12:24)
 

Сообщает браузеру тип передаваемых даних. На основе этого типа браузер решает как отобразить документ.
Если text/html, данные направляются в html-парсер. Если text/plain, вывести как есть. Если image/jpeg, к работе подключается графическая библиотека... и так далее.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования