如何通过php变量设置javascript布尔变量


How can I set a javascript boolean variable by a php variable?

我的数据库中有一些信息正在加载到我的页面上,但我希望能够使用关于该值的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
        }
    });

同步请求意味着客户端将等待请求完成,然后再执行其他操作。不建议经常使用,但有时这是唯一的方法