0

I have a loginout.php like:

<?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>
<? }?>

a div like

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

and also jquery code:

$(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;
    });
});

What is wrong if pressing the Login button, then whole page is refreshed that i don't want?

Thank you

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 falseください。onsubmitハンドラーで実行する前にエラーが原因でスクリプトが終了した場合、デフォルトの動作は妨げられません。

于 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 に答える