Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Передача строки в функцию (https://javascript.ru/forum/misc/19306-peredacha-stroki-v-funkciyu.html)

antserg 01.08.2011 13:11

Передача строки в функцию
 
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 обрамляется кавычками.

Вопрос: как можно передать строку в качестве параметра функции в данном случае?

ваый 01.08.2011 13:18

eval('(' + <?=$json?> + ')')

B@rmaley.e><e 01.08.2011 13:18

Работать он не будет из-за eval'а.
alert(eval('hello'))
Цитата:

Сообщение от ваый
eval('(' + <?=$json?> + ')')

Бред.

ваый 01.08.2011 13:33

Да точно.
Смысл вообще таким образом использовать json_encode?

nyols 01.08.2011 13:37

ваый,
Может не строку, а массив переделывать в 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>

ваый 01.08.2011 13:40

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

nyols 01.08.2011 13:42

Может строка это всего лишь для примера))) Тут уже автор должен сказать конкретно что ему надо))

antserg 01.08.2011 13:52

Цитата:

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

:)
Да, конечно, передается массив из строковых элементов, а точнее координаты дорог ломаных в закодированном виде для яндекс карт. Строковую переменную я привел для простоты

antserg 01.08.2011 14:02

Цитата:

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

Интересно, но по вашему примеру вроде работает. Буду разбираться. Спасибо

B@rmaley.e><e 01.08.2011 14:14

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


Часовой пояс GMT +3, время: 00:13.