在php

时间:2017-03-30 12:43:24

标签: php jquery

我正在创建一个论坛,我希望用户登录时更改用户面板。所以默认情况下会显示“登录或注册”。但是当用户登录时,它会显示其名称和注销选项。

这个想法是,当他们点击退出时,jQuery会要求确认,如果是真的,他们将被重定向到?logout = true,其中php处理剩下的。

问题是jQuery不会对php回应的元素起作用。

这是PHP:

<div id="userbar">
    <span id="userPanel">User Panel</span>
    <?php
        if (isset($_SESSION['signedIn'])) {
            echo '
                <a href="#" class="logout">Sign Out</a>
                <span id="welcome">
                    Hello, <b><a href="#" class="sessName">' . $_SESSION["username"] . '
                </b></a></span>
            ';
        } else {
            echo '
                <a href="signin.php" class="signIn">Sign In</a>
                <a href="signup.php" class="register">Register</a>
            ';
        }
    ?>
</div>

这是jQuery:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

<script type="text/javascript">

    $(".logout").click(function(){
        var exit = confirm("Are you sure you would like to sing out?");

        if (exit == true) {
            window.location("header.php?logout=true");
        }

        return false;
    });

</script>

3 个答案:

答案 0 :(得分:1)

首先,你需要更新你的jquery太旧了。

这是我创建的最终功能,你可以尝试一下。

       function alertLogOut(){
            var exit = confirm("Are you sure you would like to sing out?");
            if (exit == true) {
                window.location.href="header.php?logout=true"; 
            }
            return false;
        };
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<a href="#" class="logout" onclick="alertLogOut();">Sign Out</a>

答案 1 :(得分:0)

您可以在html的顶部添加您的监听器。试着这样做:

$(document).ready(function() {
    $(".logout").click(function(){
        var exit = confirm("Are you sure you would like to sing out?");

        if (exit == true) {
            window.location("header.php?logout=true");
        }

        return false;
    });
});

这样,jQuery会一直等到你的DOM被完全加载。

答案 2 :(得分:-1)

由于元素尚未在DOM中创建,因此您需要使用委托事件才能生效。

请参阅Understanding delegated events

所以你会这样做,但如果你愿意,你可以附加到另一个容器:

$(document).on('click', '.logout',  

function() {
// Do your things
})

编辑:我误导了,所有内容都已经在带有PHP回应的DOM中了