Войти

Показать полную графическую версию : JavaScript: Передача переменных


Crowner
12-05-2005, 05:22
Такая проблемка возникла. Есть на странице пле ввода текста и кнопка. Вводимый текст хранится в переменной 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-скрипту данные передовать

E-mail
12-05-2005, 19:01
Crowner а ты попробуй переносы писать так: \\n

Crowner
13-05-2005, 11:54
Ну. Возникла такая ситуация, что передать надо так ) А насчет писать переносы... Не получится. Текстовое поле. Я ж не напишу типа "Пользователи ! Не жмите ENTER пишите символ переноса! "

Prisoner
13-05-2005, 12:51
Вероятнее всего эти символы теряются при переносе в location (присвоении). можно попробовать следующий маневр -
function send()
{
window.location="sendingsms.php?msg="+encodeURIComponent(msg.value);
}
Только следует в php скрипте раскодировать строку, она URL закодирована. В этом поможет функция php urldecode.

E-mail
13-05-2005, 23:48
Crowner никого просить не надо.
у textarea например есть атрибут wrap, который в свою очередь имеет три параметра:

soft,hard и off

soft(по умолчанию) - включает перенос строк, и при этом не вставляются символы возврата каретки;
hard - включает перенос строк и заставляет область редактирования вставлять в нужные места результирующего текста символы возврата каретки;
off - отключается перенос строк.

IE 4.0 +
NN 2.0 +
в остальных ПА не фиксил, не знаю..
==============

Prisoner, encodeURIComponent - в свое время я эту функцию тут спрашивал, а мне так и не ответил никто:))...

Crowner
15-05-2005, 16:47
Да нет...Не в атрибуте wrap дело. Я вот попробовал по совету Prisoner сделать кодирование. Проблема теперь с русским языком :)
Т.е. латинские символы нормально все. А вот русские. Вместо слова ПРИВЕТ например получается Привет
Вот такая кака :(

Crowner
15-05-2005, 17:34
В общем проблемы с кодировками. Я уже заколебался над этим работать. Помогите !

В общем я так сделал.

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;
}

З.Ы. Лучше поглядеть на коды в набле, может быть я не совсем верно подредактировал функции.

spawnn
02-08-2005, 16:58
э братва ... классно ... получилось...


мож еще подскажете как сделать escape ... :)

Prisoner
03-08-2005, 09:52
В каком смысле, простите?




© OSzone.net 2001-2012