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
。
可能的解决方案:
-
将登录值存储在超级全局中:例如
$_SESSION['logged-in']
或 -
如果用户登录,请在javascript
$(document).ready()
中使用AJAX来查询PHP,并在AJAX函数的success:
函数中接收答案。
AJAX及其工作原理的简单解释