Javascript echos PHP命令,而不是PHP变量

时间:2013-11-26 03:04:33

标签: javascript php jquery

jquery代码:

$('.up_IMG').click(function() {
    if (notLoggedIn()) return false;
    alert('Got to here');
});

功能(尝试#1):引号中的

function notLoggedIn() {
    alert('here');
    logged_in = "<?php echo json_encode($logged_in); ?>";
    alert('Logged in: ' + logged_in);
}

json_encoded(尝试#2):

function notLoggedIn() {
    alert('here');
    logged_in = <?php echo json_encode($logged_in); ?>;
    alert('Logged in: ' + logged_in);
}

当调用#1 fn时,第一个代码块的警告显示:

第二个代码块什么都不做。

PHP变量确实存在且值为零。

有关正在发生的事情的任何想法?

2 个答案:

答案 0 :(得分:0)

如果您使用“click”调用此代码,那么PHP为您提供异步帮助的时间已经太晚了。
PHP在页面加载时运行,而不是在加载后运行。这是一个时间问题。 PHP永远不会输出尚不存在的东西,所以它总是空白的。

答案 1 :(得分:0)

解决方案说明:

问题是由于误解了PHP和javascript之间的关系造成的。

一旦页面呈现(即在jQuery的$(document).ready()内),所有PHP常规变量都不再存在。存在PHP 超级变量 (例如$_SESSION,但不存在$logged_in

寻求可能的解决方案:

  1. 将登录值存储在超全局:例如$_SESSION['logged-in']

  2. 如果用户已登录,请在javascript $(document).ready()中使用AJAX查询PHP,并在AJAX函数的success:函数中接收答案。

  3. Simple explanation of AJAX and how it works