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


Javascript echos PHP command, not PHP variable

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);
}

ORjson_encoded(尝试#2):

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

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

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

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

有什么想法吗?

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

解决方案说明:

这个问题是由于对PHP和javascript之间关系的误解引起的。

一旦页面被呈现(也就是说,在jQuery的$(document).ready()中),所有的PHP正则变量就不复存在了。存在PHP超变量(例如$_SESSION,但不存在$logged_in

可能的解决方案:

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

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

AJAX及其工作原理的简单解释