0

我有一个 loginout.php 像:

<?php if($isLoggedIn) { ?>
<form method="POST" action="" name="logoutForm" id="logoutForm" accept-charset='UTF-8'>
    <input type='hidden' name='submitted' id='submitted' value='1'/>
    <input type="submit" name="logout" value="Logout" />
</form>
<? } else { ?>
<form method="POST" action="" name="loginForm" id="loginForm" accept-charset='UTF-8'>
    <input type='hidden' name='submitted' id='submitted' value='1'/>
    Email:    <input type="text"     name="usr" /><br />
    Password: <input type="password" name="pw"  /><br />
    <input type="submit" name="login" value="Login" />
</form>
<? }?>

一个像

<div id="loginLogoutDiv"></div>

还有jquery代码:

$(document).ready(function(){
    $('#loginLogoutDiv').load('loginout.php');
    $('#loginForm, #logoutForm').live('submitted', function() {
        $.post('loginout.php', $(this).serialize(), function (
        data, textStatus) {
            $('#loginLogoutDiv').html(data);
        });
        return false;
    });
});

如果按下登录按钮有什么问题,然后整个页面被刷新,我不想要?

谢谢

4

3 回答 3

2

代替:

$('#loginForm, #logoutForm').live('submitted', function() { 
    ...

$('#loginForm, #logoutForm').submit(function(event) {
    event.preventDefault();
    ...

让你得到...

$(function(){
    $('#loginLogoutDiv').load('loginout.php');
    $('#loginForm, #logoutForm').submit(function(event) {
        event.preventDefault();
        $.post('loginout.php', $(this).serialize(), function (
        data, textStatus) {
            $('#loginLogoutDiv').html(data);
        });
        return false;
    });
});
于 2012-05-29T13:07:44.083 回答
1

您要附加到的事件被称为submit,而不是submitted

此外,请检查您的控制台是否有 javascript 中的错误——如果您的脚本return falseonsubmit处理程序中由于错误而终止,则不会阻止默认行为。

于 2012-05-29T13:07:27.377 回答
1

我会这样做(意思是JS):

$(document).ready(function(){
    $('#loginLogoutDiv').load('loginout.php');
    $('#loginForm, #logoutForm').submit(function(e) {
        e.preventDefault(); // this will prevent the page to really do a submit
        $.post('loginout.php', $(this).serialize(), function (
        data, textStatus) {
            $('#loginLogoutDiv').html(data);
        });
    });
});

如果您需要使用live(),应该这样做:

$(document).ready(function(){
    $('#loginLogoutDiv').load('loginout.php');
    $('#loginForm, #logoutForm').live('submit', function(e) {
        e.preventDefault(); // this will prevent the page to really do a submit
        $.post('loginout.php', $(this).serialize(), function (
        data, textStatus) {
            $('#loginLogoutDiv').html(data);
        });
    });
});
于 2012-05-29T13:07:39.217 回答