Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.08.2011, 13:11
Аватар для antserg
Аспирант
Отправить личное сообщение для antserg Посмотреть профиль Найти все сообщения от antserg
 
Регистрация: 14.05.2011
Сообщений: 61

Передача строки в функцию
PHP:
header('Content-type:text/html; charset=utf-8');
$str=150;
$json=json_encode($str);

<html>
  <head>
    <script>
      str=eval(<?=$json?>)
      function func(str)
      {
        alert(str)
      }
    </script>
  </head>
  <body onload="func(str);">
  </body>
</html>


Этот код прекрасно работает. Теперь если переменной $str присвоить не число, а строку, например $str='hello', то код работать не будет. Насколько я понимаю, причина в том, что значение атрибута тега <body> onload обрамляется кавычками.

Вопрос: как можно передать строку в качестве параметра функции в данном случае?
Ответить с цитированием
  #2 (permalink)  
Старый 01.08.2011, 13:18
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

eval('(' + <?=$json?> + ')')
Ответить с цитированием
  #3 (permalink)  
Старый 01.08.2011, 13:18
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Работать он не будет из-за eval'а.
alert(eval('hello'))
Сообщение от ваый
eval('(' + <?=$json?> + ')')
Бред.
Ответить с цитированием
  #4 (permalink)  
Старый 01.08.2011, 13:33
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Да точно.
Смысл вообще таким образом использовать json_encode?
Ответить с цитированием
  #5 (permalink)  
Старый 01.08.2011, 13:37
Кандидат Javascript-наук
Отправить личное сообщение для nyols Посмотреть профиль Найти все сообщения от nyols
 
Регистрация: 16.02.2011
Сообщений: 134

ваый,
Может не строку, а массив переделывать в json ?

header('Content-type:text/html; charset=utf-8');
$str= array('hello');
$json=json_encode($str);


<html>
  <head>
    <script>
      str=eval(<?=$json?>)
      function func(str)
      {
        alert(str[0])
      }
    </script>
  </head>
  <body onload="func(str);">
  </body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 01.08.2011, 13:40
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

В том-то и вопрос: зачем тут json вообще, если вы просто строку передаете. Зачем json, зачем eval. Если надо передать более сложную структуру, то да, json. А так..
Ответить с цитированием
  #7 (permalink)  
Старый 01.08.2011, 13:42
Кандидат Javascript-наук
Отправить личное сообщение для nyols Посмотреть профиль Найти все сообщения от nyols
 
Регистрация: 16.02.2011
Сообщений: 134

Может строка это всего лишь для примера))) Тут уже автор должен сказать конкретно что ему надо))
Ответить с цитированием
  #8 (permalink)  
Старый 01.08.2011, 13:52
Аватар для antserg
Аспирант
Отправить личное сообщение для antserg Посмотреть профиль Найти все сообщения от antserg
 
Регистрация: 14.05.2011
Сообщений: 61

Сообщение от ваый
В том-то и вопрос: зачем тут json вообще, если вы просто строку передаете. Зачем json, зачем eval. Если надо передать более сложную структуру, то да, json. А так..

Да, конечно, передается массив из строковых элементов, а точнее координаты дорог ломаных в закодированном виде для яндекс карт. Строковую переменную я привел для простоты
Ответить с цитированием
  #9 (permalink)  
Старый 01.08.2011, 14:02
Аватар для antserg
Аспирант
Отправить личное сообщение для antserg Посмотреть профиль Найти все сообщения от antserg
 
Регистрация: 14.05.2011
Сообщений: 61

Сообщение от nyols
Может не строку, а массив переделывать в json ?
Интересно, но по вашему примеру вроде работает. Буду разбираться. Спасибо
Ответить с цитированием
  #10 (permalink)  
Старый 01.08.2011, 14:14
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Мда, слов много, а до сути никто не дошёл. Главный вопрос: зачем здесь eval?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача в функцию переменного количества аргументов Эдди Элементы интерфейса 35 09.11.2018 15:25
Можно ли преобразовать текст строки в функцию? YISHIMITSY Общие вопросы Javascript 2 13.02.2010 12:13
передача имени элемента в функцию Zubik Общие вопросы Javascript 0 06.10.2009 11:00
Протокол date: (передача переноса строки) BIOHAZARD Общие вопросы Javascript 2 01.10.2009 07:31
передача динамических данных в функцию Ruah Общие вопросы Javascript 4 02.09.2009 22:04