Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   JavaScript: Передача переменных (http://forum.oszone.net/showthread.php?t=49178)

Crowner 12-05-2005 05:22 323441

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 323501

А можно такой вопрос, зачем вы используете Джава скрипт ддля посылки данных PHP-скрипту? Легче же от PHP-скрипта PHP-скрипту данные передовать

E-mail 12-05-2005 19:01 323594

Crowner а ты попробуй переносы писать так: \\n

Crowner 13-05-2005 11:54 323768

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

Prisoner 13-05-2005 12:51 323785

Вероятнее всего эти символы теряются при переносе в location (присвоении). можно попробовать следующий маневр -
Код:

function send()
  {
  window.location="sendingsms.php?msg="+encodeURIComponent(msg.value);
  }

Только следует в php скрипте раскодировать строку, она URL закодирована. В этом поможет функция php urldecode.

E-mail 13-05-2005 23:48 323934

Crowner никого просить не надо.
у textarea например есть атрибут wrap, который в свою очередь имеет три параметра:

soft,hard и off

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

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

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

Crowner 15-05-2005 16:47 324333

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

Crowner 15-05-2005 17:34 324343

В общем проблемы с кодировками. Я уже заколебался над этим работать. Помогите !

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

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 324559

Хм... моя оплошность :(. Ну да ладно, пробуем расширенный вариант:
Код:

function send()
  {
  window.location="sendingsms.php?msg="+escape(msg.value);
  }

На стороне сервера будем использовать две функции (взяты из из статьи 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 345438

э братва ... классно ... получилось...


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

Prisoner 03-08-2005 09:52 345610

В каком смысле, простите?


Время: 07:07.

Время: 07:07.
© OSzone.net 2001-