0

Ajax/jQuery の初心者。これまで試したことはすべて失敗しました。ログインしている場合とログインしていない場合にリンクを表示するための動的ヘッダーがあります。

リンクを表示するために単純な php if else を使用します。

送信 jQuery/Ajax 関数が呼び出されると、ログインがドロップダウンします。成功したら、LoggedOut が何を行うかを非表示にする必要があります。しかし、LoggedIn はそれ自体を表示することを拒否します。

このヘッダーとリンクは常に存在する必要があるため、css で display: none を使用できません。

眉をしかめたり頭を掻いたりするのをやめられるように助けてください:)どうもありがとう。

success: function(data) {

        $("#statusLogin").hide();

        if(data.success == true){

            $('#loggedIn').show();  //GAAAAAAAAAAAH!!!!!
            $('#loginContent').slideToggle();
            $('#loggedOut').hide();

        }else{
           // alert("data.message... " + data.message);//undefined
            $("#error").show().html(data.message);
        }

    },

編集: HTML のバルク

    <?php if($general->loggedIn()){ ?>

<nav class = "memberHeaderArea" id="loggedIn">
    <ul>
        <li>
            <a href="userProfile.php?username=<?php echo $user['username'];?>">Profile<span class="user icon"></span></a>
        </li>
        <li>
            <a href="userLogout.php">Log out<span class="lock icon"> </span></a>
        </li>
    </ul>
</nav>

<?php
     //toplinks for when not logged in
 }else{ ?>

<nav class = "memberHeaderArea" id ="loggedOut">
    <ul>
        <li id="login">
            <a id="loginTrigger" href="#">Login<span class="unlock icon"></span></a>

            <div id="loginContent">

                <form method="post" action="" id="ourLoginFormID_JS">
                    <div id="error"></div>
                    <div class="ourContactFormElement2">
                        <label for="username">Username:</label>
                        <input type="text" id="username"  name="username" autocomplete="off" class="required" value="<?php if(isset($_POST['username'])) echo htmlentities($_POST['username']); ?>"  />
                    </div>

                    <div class="ourContactFormElement2">
                        <label for="password">Password:</label>
                        <input type="password" id="password" name="password" autocomplete="off" class="required"/>
                    </div>

                    <div class="ourContactFormElement2">
                        <label> &nbsp; </label>
                        <input type="submit" name="loginButton" id="loginButton" value="Login!" onclick="validLogin(); return false;"/>
                    </div>

                    <div id="statusLogin"></div>
                </form>

            </div>
        </li>

        <li>
            <a href="userRegister.php">Register<span class="adduser icon"></span></a>
        </li>


    </ul>
</nav>

 <?php
 }
 ?>
4

2 に答える 2

0

loggedIn問題は、最初のページの読み込みに要素が含まれていないことです。サーバー側のコードがあります。

    <?php if($general->loggedIn()){ ?>

...そもそもそれらのフィールドを送信しません。次に、Ajax 呼び出しを使用してログインを行いますが、新しいコンテンツがページに読み込まれないため、要素が存在しないため、jQuery$('#loggedIn')は要素を見つけられません。(これは、ブラウザの [ページ ソースの表示] オプション (または同等のオプション) をクリックすることで確認できます。その要素は表示されません)。

これを修正するには、すべての HTML を前もって送信してから、必要に応じて表示または非表示にし、ユーザー名を jQuery/JS 経由でも表示するように設定するか、Ajax を変更して、ログ記録後に表示される関連する HTML を返すようにします。の。

于 2013-07-21T10:48:42.523 に答える