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变量确实存在且值为零。
有关正在发生的事情的任何想法?
答案 0 :(得分:0)
如果您使用“click”调用此代码,那么PHP为您提供异步帮助的时间已经太晚了。
PHP在页面加载时运行,而不是在加载后运行。这是一个时间问题。 PHP永远不会输出尚不存在的东西,所以它总是空白的。
答案 1 :(得分:0)
解决方案说明:
问题是由于误解了PHP和javascript之间的关系造成的。
一旦页面呈现(即在jQuery的$(document).ready()
内),所有PHP常规变量都不再存在。存在PHP 超级变量 (例如$_SESSION
,但不存在$logged_in
。
寻求可能的解决方案:
将登录值存储在超全局:例如$_SESSION['logged-in']
或
如果用户已登录,请在javascript $(document).ready()
中使用AJAX查询PHP,并在AJAX函数的success:
函数中接收答案。