jQuery Ajax脚本相互淘汰

时间:2015-04-13 17:46:36

标签: javascript php jquery ajax mysqli

我的代码有点问题。我想建立一个基于ajax的网站,你不需要刷新页面。但是两个js相互淘汰或者出了什么问题,因为我可以登录,但是当我尝试注销时,没有任何事情发生,但是如果我刷新(我仍然可以进入)我可以注销,但现在当登录表单出现时我无法登录。这是我的javascript代码。

$(document).ready(function() {
    $(".login").click(function() {
        var dataString = $("#loginform").serialize();
        $.ajax({
            type: "POST",
            url: "checklogin.php",
            data: dataString,
            cache: false,
            success: function(html) {
                $("#pirossavon").html(html);
                $('#content').load(document.URL + ' #content');
            }
        });

    });
});


$(document).ready(function() {
    $(".logout").click(function() {

        $.ajax({
            type: "POST",
            url: "checklogin.php",
            data: "logout=1",
            cache: false,
            success: function(html) {
                $("#pirossavon").html(html);
                $('#content').load(document.URL + ' #content');
            }
        });

    });
});

正如你所看到的,在成功ajax之后,我正在重新加载标题(登录表单和登录时的详细信息)和我网站的内容div。

1 个答案:

答案 0 :(得分:0)

在进行任何AJAX调用之前,两个脚本标记都在文档中吗?

问题可能是您没有使用delegated events



$(document).ready(function() {
  $(document).on('click', '.login', function() {

    // AJAX

  });
});

$(document).ready(function() {
  $(document).on('click', '.logout', function() {

    // AJAX

  });
});




由于登录前登录按钮不存在,因此您的事件处理程序不会附加到任何对象。刷新后,会附加事件,但现在登录按钮没有事件处理程序。所以你可以注销,但现在你无法登录。通过将事件附加到文档(或者在AJAX调用期间没有被替换的两个按钮的任何父项都很好)并委派它即使其中一个按钮没有出现在尚未的文档中,也会附加到相应的按钮,即使是事件处理程序。

希望这有帮助!