Как передать переменную из php в js

fantazista

Новичок
Доброго времени суток.

Есть php файл.
Вида
PHP:
<?php
define('DIRECT_ACCESS', 1); // PRE - init
@ini_set('display_errors', true);
error_reporting(E_ALL);

$x = 5;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>TEST</title>
		<script src="http://md/salam/ajax_test/js/settings.js"  type="text/javascript"></script> 
</head>
<body>
<p> Test </p>
</body>
</html>
В индексе некоторой переменной присваивается значение. Допустим $x.

После в html подключается скрипт settings.js
Как в нем увидеть перемнную которая определилась в index.php файле ?

Грубо говоря что бы это
[js]alert (x);[/js]
сработало.


Когда все пишу внитри html все получается... Вроде этого

PHP:
<?php
define('DIRECT_ACCESS', 1); // PRE - init
@ini_set('display_errors', true);
error_reporting(E_ALL);

$x = 5;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>TEST</title>
		
		<script type="text/javascript">
			var x = "<?php echo $x; ?>";
			alert(x);
		</script>
</head>
<body>

<p> Test </p>

</body>
</html>
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
никак не увидеть, только вариант 2
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну что уж, давайте считывать файл JS, парсить его и перезаписывать каждый раз, при вызове скрипта, с новым значением переменной)))
 

fixxxer

К.О.
Партнер клуба
1. phpfaq.ru/na_tanke
2. идеологически правильно генерировать не js, а пропихивать через атрибуты. Ну например
<html data-x="<?php echo htmlspecialchars($x) ?>">
...
 

fantazista

Новичок
Задача такая. в конкретном реальном примере примере
Есть файл index.php

PHP:
<?php
define('DIRECT_ACCESS', 1); // PRE - init
@ini_set('display_errors', true);
error_reporting(E_ALL);
//error_reporting(E_NONE);

if (!file_exists("settings/config.php")) {die('');}

require_once 'class/facebook.php';
require_once 'settings/config_facebook.php';
header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"'); // IE iframe session bug fix

 $facebook = new Facebook(array(
    'appId'  => FACEBOOK_APP_ID,
    'secret' => FACEBOOK_SECRET_KEY,
    'cookie' => true,
));
 
$session = $facebook->getSession();
 
if (!$session) {
    $url = $facebook->getLoginUrl(array(
               'canvas' => 1,
               'fbconnect' => 0,
			   'req_perms' =>'publish_stream',
			   'next' => 'http://apps.facebook.com/mobilepuzzle/'
           ));
    echo "<script type='text/javascript'>top.location.href = '$url';</script>";
} else {
    try {
      $uid = $facebook->getUser();
      $fbme = $facebook->api('/me?fields=id,name,picture');
      $uid = $fbme['id'];
      $name = $fbme['name'];
      $user_icon = $fbme['picture'];
    } catch (FacebookApiException $e) {
 		 echo "Error:" . print_r($e, true);
 	}
}

require_once 'class/DB.class.php';
require_once 'class/cmsApi.class.php';
require_once 'class/utils.class.php';

$api = new cmsApi();
	$game = 0;
	$points = 0;
		
	$query = "INSERT INTO `pz_statistics` (`uid`, `user_icon`, `name`, `game`, `points`) VALUES ('$uid', '$user_icon', '$name', '$game', '$points')";
	mysql_query($query);

require_once 'class/template.class.php';
require_once 'class/blocks.class.php';
new template();
Как видите в этом файле определяется переменная uid потльзователя facebook.
В template.class.php генерируются html. header, main
В header.tpl подключается js файл, в котором много чего, и который тоже потом отправит данные на сервер при помощи ajax.
Так вот файл который получит эти данные должен видеть $uid, что бы по этому полю обновить базу.

Возможно я ошибаюсь. И мне не нужно, что бы js заново отправлял $uid этому controller.php
Может быть он сам в состоянии увидеть эту переменную.
Как это возможно сделать
 

akxxiv

Новичок
1. phpfaq.ru/na_tanke
2. идеологически правильно генерировать не js, а пропихивать через атрибуты. Ну например
<html data-x="<?php echo htmlspecialchars($x) ?>">
...
Второй ответ отпал? ))))))))))))))))))))

... Может быть он сам в состоянии увидеть эту переменную.
Как это возможно сделать
Блина, ну че подумать сложно. Тебе же уже сказали...
1. Либо где-то вначале шаблона твоего определи глобальую js переменную и хавай ее из любых подключаемых скриптов.
2. Либо где-то в шаблоне вложи в к.н. атрибут к.н. тэга (напр боди или хтмл) номер твоего uid. А затем из скриптов просто извлекай его.
3. Можешь вооще на серванте занести переменную в сессию и юзать ее не передавай по сто раз клиенту. Хотя если это ФБ, то наверное не прокатит )))
 

fantazista

Новичок
Вроде бы получилось. Но я все это начало шаблона поставил в index.php
По другому не видит.
Хотелось бы через сессии потом это реализовать. Там в дальнейшем видно будет.
Спасибо.
 
Сверху