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