我的数据库中有一些信息正在加载到我的页面上,但我希望能够使用关于该值的if语句,然后将javascript值分配为布尔值。我该怎么办?(目前我正在打印数值)
<?php
if ($_SESSION['loggedin'] = true){
print_r($_SESSION['userlevel']); // THIS IS WHAT I WANT TO SPECIFY IN AN IF STATEMENT
}
?>
<script>
var userloggedin = false;
</script>
我想在伪代码中做什么:
<script>
var userloggedin = false;
function somefunction(){
if (userloggedin == true){
//Do stuff...//
}
}
</script>
很抱歉我缺乏这方面的知识,我才刚刚开始学习后端web开发。
你有没有试过在论坛上搜索以前关于将PHP变量解析为javascript的帖子?
通过简单的搜索,我在这里找到了一个与将PHP变量解析为JavaScript相关的提要:
从PHP到JavaScript 获取变量
不管怎样,根据我对你问题的理解,这是一个合适的答案吗?
<?php
if ($_SESSION['loggedin'] == true){
$userLevel = $_SESSION['userlevel'];
$userLoggedIn = true;
}
else {
$userLevel = null;
$userLoggedIn = false;
}
?>
<script type="text/javascript">
var userLoggedIn = "<?php Print($userLoggedIn); ?>";
var userLevel = "<?php Print($userLevel); ?>";
if (userLoggedIn == true) {
if (userLevel == "levelOne") {
//Your code here
}
else if (userLevel == "levelTwo") {
//Your code here
}
else {
//Your code here
}
}
</script>
您可以从PHP中回显Javascript代码,如下所示:
<script>
var userloggedin = <?php echo ($_SESSION['loggedin'] ? 'true' : 'false'); ?>;
</script>
如果希望表达式按预期工作,请首先将if语句更改为使用==
双等号。然后,您可以简单地将变量echo
转换为javascript,如下例所示:
简单的解决方案类似于:
<?php
if ($_SESSION['loggedin'] == true){
$logged_in = "true";
} else {
$logged_in = "false";
}
?>
<script>
var userloggedin = <?php echo $logged_in;?>;
</script>
您可以通过以下方式设置带有php值的javascript变量:
<script>
var jsVar='<?php echo $phpVar ?>';
</script>
一个简单的解决方案就是在脚本标记中回显变量值。但这是不安全的,因为变量是全局的,这意味着它可以在客户端控制台中修改。
更好的解决方案是使用ajax请求和php脚本返回一些响应,这样变量的作用域就属于ajax响应函数,因此可以避免修改。这里有一个例子:
...
echo json_encode($_SESSION['loggedin'] ? 'true' : 'false');
...
在javascript中,您可以使用jquery .get()
请求:
$.get("userLoggedIn.php", function(data) {
var response = JSON.parse(data);
if(data === true) {
// user is logged in
}
else {
// not logged in
}
});
如果在处理其他功能之前处理此功能很重要,那么可以使用同步ajax请求:
$.ajax({
url: "userLoggedIn.php",
async: false, // this makes request synchronous
success: function (data) {
var response = JSON.parse(data);
if (data === true) {
// user is logged in
} else {
// not logged in
}
});
同步请求意味着客户端将等待请求完成,然后再执行其他操作。不建议经常使用,但有时这是唯一的方法