Показать полную графическую версию : JavaScript: Передача переменных
Такая проблемка возникла. Есть на странице пле ввода текста и кнопка. Вводимый текст хранится в переменной msg. По клику на кнопку вызывается функция send(), которая загружает страницу с php, обрабатывающем текст в переменной.
function send(){window.location="sendingsms.php?msg="+msg.value;}
Трабла в том, что при этом, почему то, теряются все символы перевода строки (13,10). Т.е. Сколько бы строк не ввел, сколько бы раз не нажал ENTER, все-равно, как будто одна строка - ни одного перевода строки.
Пробовал перед отправкой alert(msg.value); чтобы посмотреть, нет ! все нормально ! все по строкам, чики-пуки. А дргуая страница грузанулась и все ! Нет переводов строк ! Одна строка типа... Я уж и не знаю как быть.
Подскажите решение, век благодарен буду.
vadimiron
12-05-2005, 12:31
А можно такой вопрос, зачем вы используете Джава скрипт ддля посылки данных PHP-скрипту? Легче же от PHP-скрипта PHP-скрипту данные передовать
Crowner а ты попробуй переносы писать так: \\n
Ну. Возникла такая ситуация, что передать надо так ) А насчет писать переносы... Не получится. Текстовое поле. Я ж не напишу типа "Пользователи ! Не жмите ENTER пишите символ переноса! "
Prisoner
13-05-2005, 12:51
Вероятнее всего эти символы теряются при переносе в location (присвоении). можно попробовать следующий маневр -
function send()
{
window.location="sendingsms.php?msg="+encodeURIComponent(msg.value);
}
Только следует в php скрипте раскодировать строку, она URL закодирована. В этом поможет функция php urldecode.
Crowner никого просить не надо.
у textarea например есть атрибут wrap, который в свою очередь имеет три параметра:
soft,hard и off
soft(по умолчанию) - включает перенос строк, и при этом не вставляются символы возврата каретки;
hard - включает перенос строк и заставляет область редактирования вставлять в нужные места результирующего текста символы возврата каретки;
off - отключается перенос строк.
IE 4.0 +
NN 2.0 +
в остальных ПА не фиксил, не знаю..
==============
Prisoner, encodeURIComponent - в свое время я эту функцию тут спрашивал, а мне так и не ответил никто:))...
Да нет...Не в атрибуте wrap дело. Я вот попробовал по совету Prisoner сделать кодирование. Проблема теперь с русским языком :)
Т.е. латинские символы нормально все. А вот русские. Вместо слова ПРИВЕТ например получается Привет
Вот такая кака :(
В общем проблемы с кодировками. Я уже заколебался над этим работать. Помогите !
В общем я так сделал.
function send(){
mes=encodeURIComponent(msg.value);
window.location="sendingsms.php?&msg="+mes;}
На другой странице, php принимает:
$msg=$_REQUEST[msg];
$msg=urldecode($msg);
И в результате совсем неудобоваримые символы вместо русских.
Prisoner
16-05-2005, 13:26
Хм... моя оплошность :(. Ну да ладно, пробуем расширенный вариант:
function send()
{
window.location="sendingsms.php?msg="+escape(msg.value);
}
На стороне сервера будем использовать две функции (взяты из из статьи (http://dklab.ru/chicken/nablas/41.html) dklab.ru):
// Undo JS's escape() function.
function _unescape($s)
{
$s = preg_replace_callback(
'/% (?: u([A-F0-9]{1,4}) | ([A-F0-9]{1,2})) /sxi',
'_unescapeCallback',
$s
);
return $s;
}
// Inplace entity replacement.
function _unescapeCallback($p)
{
if ($p[1])
{
$u = pack('n', $dec=hexdec($p[1]));
$c = @iconv('UCS-2BE', 'windows-1251', $u);
}
return $c;
}
З.Ы. Лучше поглядеть на коды в набле, может быть я не совсем верно подредактировал функции.
э братва ... классно ... получилось...
мож еще подскажете как сделать escape ... :)
Prisoner
03-08-2005, 09:52
В каком смысле, простите?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.