Передача строки в функцию
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 обрамляется кавычками. Вопрос: как можно передать строку в качестве параметра функции в данном случае? |
eval('(' + <?=$json?> + ')')
|
Работать он не будет из-за eval'а.
alert(eval('hello'))
Цитата:
|
Да точно.
Смысл вообще таким образом использовать json_encode? |
ваый,
Может не строку, а массив переделывать в 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>
|
В том-то и вопрос: зачем тут json вообще, если вы просто строку передаете. Зачем json, зачем eval. Если надо передать более сложную структуру, то да, json. А так..
|
Может строка это всего лишь для примера))) Тут уже автор должен сказать конкретно что ему надо))
|
Цитата:
Да, конечно, передается массив из строковых элементов, а точнее координаты дорог ломаных в закодированном виде для яндекс карт. Строковую переменную я привел для простоты |
Цитата:
|
Мда, слов много, а до сути никто не дошёл. Главный вопрос: зачем здесь eval?
|
Цитата:
|
JSON.parse(jsonString)
для браузеров без нативной поддержки подключать json2.js (https://github.com/douglascrockford/...aster/json2.js) если уверены, что json строка валидная, не содержит всяких плохих вставок, и прочей каки, и не приходит от пользовательского ввода, то можно использовать eval, хотя и не желательно. Что-то типа такого:
var jsonObj = (function() { return eval('(' + jsonString + ')'); })();
// или
var jsonObj = eval("(function(){return " + strJSON + ";})()");
|
Цитата:
Спасибо за помощь, буду разбираться. |
Цитата:
Цитата:
|
| Часовой пояс GMT +3, время: 22:31. |