Получение переменной в JS из PHP после загрузки страницы. Как?

[Удален]
3757

Доброго времени, господа!

Есть следующая задача. Есть сайт, на странице которого выполняется JS. Нужно сделать так, чтобы некоторые переменные в JS получили значение некоторых переменных в PHP ПОСЛЕ загрузки страницы. Движок выполнение PHP позволяет только после загрузки страниц через ajax (т.е., собсно, не позволяет))), поэтому фишка с генерацией скрипта, содержащего нужные переменные ДО загрузки страницы не катит :((

Грубо говоря в PHP:

<?

$back[avatar] = 'link';
$back[name] = 'Вася';
$back[age]='18';
?>

В html-коде ПОСЛЕ загрузки страницы нужно:

<script type="text/javascript">

var avatar = ????; //здесь переменной avatar присваивается значение $back['avatar'];
var name = ????; //по аналогии
var age = ????; //тоже
document.getElementById('avatar').src = avatar;
document.getElementById('name').innerHTML = name;
document.getElementById('age').innerHTML = age;
</script>

где ???? — неизвестный код, необходимый для получения данных из php-файла.

Пока искал решение в поисковиках, постоянно натыкался на упоминание некоего формата JSON, но, в силу того, что JS знаю на примитивнейшем уровне, ничего путного для себя так и не обнаружил.

Помогите, плиз, бо уже всю голову сломал.

F
На сайте с 17.07.2012
Offline
66
#1

записывай переменные php в поля hidden (<input type='hidden' id='field1' value='<?=$back[avatar];?>'> ).

код javascript должен располагаться после этих полей.

В javascript:

var avatar = $("#field1").val() (jquery) или var avatar = document.getElementById('field1').value

siv1987
На сайте с 02.04.2009
Offline
427
#2
Движок выполнение PHP позволяет только после загрузки страниц через ajax (т.е., собсно, не позволяет)))

Ничего не понятно. Какая разница каким образом грузится страница, через ajax или как-то иначе, генерируется же она на сервере.

Php


$back[avatar] = 'link';
$back[name] = 'Вася';
$back[age]='18';

echo json_encode( $back );

JavaScript

http://api.jquery.com/jQuery.getJSON/


$.getJSON('/script.php', function(items) {
$('#avatar').attr('src', items.avatar);
$('#name').html(items.name);
});
[Удален]
#3
Feetz:
записывай переменные php в поля hidden (<input type='hidden' id='field1' value='<?=$back[avatar];?>'> ).

Не могу сказать, что ошибочно, но у меня не получилось. Хотя input появляется в коде страницы после вставки его аяксом, но переменной значение не присваивается (при этом, если такой же input прописать сразу в код страницы, то работает).

siv1987:
Ничего не понятно. Какая разница каким образом грузится страница, через ajax или как-то иначе, генерируется же она на сервере.

Не исключаю, что разницы может не быть, но на моем уровне знаний она есть.

Тем не менее, огромное вам спасибо. Ваш код сработал на ура. Я, правда, ни буквы не понял в части JS, но теперь знаю куда копать и хотя бы азы jQuery буду осваивать.

Кстати, на будущее. Если вдруг кто-нибудь натолкнется на эту тему с аналогичным моему вопросом, и, вдруг, удивится почему json_encode возвращает null для русского текста — проверяйте входящие данные php-файла на кодировку.

S5
На сайте с 04.01.2010
Offline
77
#4

<script type="text/javascript">

var avatar = <?php echo($back['avatar']); ?>; //здесь переменной avatar присваивается значение $back['avatar'];

var name = ????; //по аналогии

var age = ????; //тоже

document.getElementById('avatar').src = avatar;

document.getElementById('name').innerHTML = name;

document.getElementById('age').innerHTML = age;

</script>

При генерации. а так, проще всего jetJSON-ом

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий