当前位置: 首页 > 面试题库 >

jQuery和AJAX登录表单

萧凡
2023-03-14
问题内容

我正在忙于开发一个网站,该网站的右上角有一个登录框。我希望用户能够在不刷新的情况下登录同一页面。

好的,我已经开始工作了,但是我仍在努力登录后的过程,如下所示:

(HTML)

<li class="login">
<? if (!isset($_SESSION['logged_in'])) {
    include("isNotLoggedIn.php");
} else {
    include("isLoggedIn.php");
} ?>
</li>

(PHP)

session_start();

$username = $_POST['username'];
$password = $_POST['password'];

if ($username == "admin" && $password == "XXX") {
    $_SESSION['logged_in'] = true;
    $_SESSION['user'] = $username;

    echo include("isLoggedIn.php");
} else {
    echo include("isNotLoggedIn.php");
}

(我的jQuery)

$("form#login").submit(
    function() {
        var usernameVal = $("input[name='username']").val();
        var passwordVal = $("input[name='password']").val();

        $.post("login.php",{username : usernameVal, password : passwordVal},
        // callback function to receive feedback
        function(data) {
            $("li.login").html(data);
        });
        return false;
    });

$("a[name='logout']").click(
    function() {
        $.post("logout.php",
            function(data) {
                $("li.login").html(data);
            });
    });

(isLoggedIn.php)

Welcome, <? echo $_SESSION['user']; ?>!<br />
<a href="#">Add game</a><br />
<a href="#">Add player</a><br /><br />
<a href="#" name="logout">Log out</a>

(isNotLoggedIn.php)

<form method="post" id="login">
    <input type="text" name="username" alt="Username" class="text" title="Username: Required" value="username" /><br />
    <input type="password" name="password" alt="Password" class="text" title="Password: Required" value="password" /><br />
    <input type="submit" name="submit" alt="Login" title="Login" value="Login" class="submit" />
</form>

登录过程可以正常工作,但是注销混乱。当我单击isLoggedIn.php中的Logout链接时,它注销了,但是我在文本输入上的jQuery和表单本身上的jQuery不再起作用。

有没有一种方法我必须刷新我的jQuery才能在替换的HTML上重新激活?任何帮助表示赞赏。

问候和TIA


问题答案:

只是为了详细说明redsquare的答案,您需要将jQuery更改为此…:

$(function() {
    /** 
        ...What ever else you might have onload... 
    **/
    $("a[name='logout']").live('click',function() {  // Now using the .live() event
        $.post("logout.php", function(data) {
            $("li.login").html(data);
            bind_login_submit();     // <---- Notice, this is new
        });
    });
    bind_login_submit();    // Call this function to initially bind the submit
});

function bind_login_submit() {
    $("form#login").unbind('submit').bind('submit',function() {
        var usernameVal = $("input[name='username']").val();
        var passwordVal = $("input[name='password']").val();

        $.post("login.php",{username : usernameVal, password : passwordVal}, function(data) {
            $("li.login").html(data);
        });
        return false;
    });
}


 类似资料:
  • 您好,我知道这个主题以前就有人提出过,但是没有人像我这样做过AJAX操作标准。我是AJAX和jQuery的新手 我这里的问题是,我不确定js函数“ajaxPostCallManip()”是否达到“login.php”!! 我发了几个警报,但没有出现...请帮帮忙 超文本标记语言代码 js代码 PHP代码

  • 问题内容: 我有一个相当简单的登录表单,该表单随jQuery AJAX请求一起提交。当前,提交表单的唯一方法是按下“登录”按钮,但是我希望能够在用户按下“ Enter”时提交表单。 我只使用jQuery AJAX请求完成表单提交,但是我不确定要在用户按下“ Enter”键时提交表单也需要进行哪些修改。 HTML: JavaScript: 摘录自login.php: 问题答案: 在表单中添加一个ID

  • 问题内容: 通过ajax提交登录表单时,我只是遇到一些问题,我主要是PHP开发人员,在PHP中我并不经常使用Jquery + Ajax。 目前,如果我在提交表单后检查firebug POST数据,它的确会获取已添加到表单的用户名和密码,但是无论是否添加了错误的用户名和密码,或者是否添加了错误的页面,页面都只会重新加载它们是正确的,并且没有创建会话。 形式如下: 这是Ajax / Jquery: 这

  • 问题内容: 我有一个示例,尝试使用Symfony2和FOSUserBundle创建AJAX登录。我设置我自己和在我的文件。 这是课程: 这对于处理成功和失败的AJAX登录尝试都非常有用。但是,启用后-我无法通过标准表单POST方法(非AJAX)登录。我收到以下错误: 我希望自己的重写和重写仅对XmlHttpRequests(AJAX请求)执行,如果没有,则将执行交还给原始处理程序。 有没有办法做到

  • 我将使用CSRF codeigniter和ajax进行安全登录。但是我有一个问题,我的语法。 这是我的表格: 这是我的javascript: 和我的控制器: 我的模型是:

  • 我尝试使用Laravel5.2Auth使用Ajax创建登录表单。 Laravel默认登录功能: /登录返回索引页作为响应。我需要关于错误消息或成功消息的json响应。据说改变Laravel的核心功能是不可取的。那我怎么才能拿到呢?