我的代码有点问题。我想建立一个基于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。
答案 0 :(得分:0)
在进行任何AJAX调用之前,两个脚本标记都在文档中吗?
问题可能是您没有使用delegated events。
$(document).ready(function() {
$(document).on('click', '.login', function() {
// AJAX
});
});
$(document).ready(function() {
$(document).on('click', '.logout', function() {
// AJAX
});
});

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