Форма входа в jquery в div без обновления всей страницы

У меня есть php-файл, который я хочу запустить для работы в div:

<?php session_start(); ?> <?php function loginForm() { ?> <form method="POST" action="" name="loginForm" id="loginForm" accept-charset='UTF-8'> <input type='hidden' name='submit' id='submit' value='1'/> User: <input type="text" name="user" id="user" /><br /> Password: <input type="password" name="passwd" id="passwd" /><br /> <input type="submit" name="login" id="login" value="Login" /> </form> <?php } ?> <?php function logoutForm() { ?> <form method="POST" action="" name="logoutForm" id="logoutForm"> Logout: <input type="submit" value="Log out" name="logout" id="logout" /> </form> <?php } ?> <?php function loggedUser() { if(isset($_SESSION['user']) && isset($_SESSION['passwd'])) { return $_SESSION; } else { return array(); } } function loginLogout() { $loggedUser = loggedUser(); if(!empty($loggedUser)) { logoutForm(); } else { loginForm(); } if(isset($_POST['login']) && isset($_POST['user']) && isset($_POST['passwd']) && $_POST['user'] == "admin" && $_POST['passwd'] == "admin") { $_SESSION['user'] = $_POST['user']; $_SESSION['passwd'] = $_POST['passwd']; header('Refresh: 1; url='.$_SERVER['REQUEST_URI']); } if(isset($_POST['logout']) && isset($_SESSION)) { foreach($_SESSION as $k => $v) { unset($_SESSION[$k]); } header('Refresh: 1; url='.$_SERVER['REQUEST_URI']); } } loginLogout(); ?> 

А также у меня есть коды в jquery и html

 <script type="text/javascript"> $(document).ready(function(){ $('#logindiv').load('loginLogout.php'); $('#loginForm, #logoutForm').live('submit', function(e) { e.preventDefault(); $.post('loginLogout.php', $(this).serialize(), function ( data, textStatus) { $('#logindiv').html(data); }); return false; }); }); </script> 

и div

 <div id="logindiv"></div> 

Как правильно поставить код, который входит в систему и выходит из системы, также работает в jquery без обновления всей страницы? Что такое событие обновления, которое распознает заголовок строки ('Refresh: 1; url ='. $ _ SERVER ['REQUEST_URI']); в php-файле. Widhout div и jquery работают хорошо.

спасибо

Related of "Форма входа в jquery в div без обновления всей страницы"

Ниже приведен полный рабочий пример с использованием 2 файлов, которые позволят динамически обновлять форму входа / выхода из системы без обновления страницы. Код очень похож на ваш.

Код для form.php

 <?php session_start(); function loginForm($isHidden) { $display = ($isHidden) ? "none" : "block"; ?> <form method="POST" action="" name="loginForm" id="loginForm" accept-charset='UTF-8' style="display: <?php echo $display; ?>;"> <input type='hidden' name='actionLogin' id='actionLogin' value='1'/> User: <input type="text" name="user" id="user" /><br /> Password: <input type="password" name="passwd" id="passwd" /><br /> <input type="submit" name="login" id="login" value="Login" /> </form> <?php } function logoutForm($isHidden) { $display = ($isHidden) ? "none" : "block"; ?> <form method="POST" action="" name="logoutForm" id="logoutForm" style="display: <?php echo $display; ?>;"> <input type='hidden' name='actionLogout' id='actionLogout' value='1'/> Logout: <input type="submit" value="Log out" name="logout" id="logout" /> </form> <?php } function loggedUser() { if(isset($_SESSION['user']) && isset($_SESSION['passwd'])) { return $_SESSION; } else { return array(); } } ?> <html> <head> <title>Form</title> <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script> <script type="text/javascript"> $(document).ready(function(){ $('#loginForm, #logoutForm').live('submit', function(e) { e.preventDefault(); $.post('loginLogout.php', $(this).serialize(), function (data, textStatus) { if (data == "true") { //login successful $("#loginForm").hide(); $("#logoutForm").show(); } else { $("#loginForm").show(); $("#logoutForm").hide(); } }); return false; }); }); </script> </head> <body> <div id="logindiv"> <?php $loggedUser = loggedUser(); if(!empty($loggedUser)) { loginForm(true); //hidden logoutForm(false); //not hidden } else { loginForm(false); logoutForm(true); } ?> </div> </body> </html> 

Код для loginLogout.php

 <?php session_start(); if(isset($_POST['actionLogin']) && isset($_POST['user']) && isset($_POST['passwd']) && $_POST['user'] == "admin" && $_POST['passwd'] == "admin") { $_SESSION['user'] = $_POST['user']; $_SESSION['passwd'] = $_POST['passwd']; echo "true"; //successful log in } else if(isset($_POST['actionLogout']) && isset($_SESSION)) { foreach($_SESSION as $k => $v) { unset($_SESSION[$k]); } echo "false"; //successful log out } ?> с <?php session_start(); if(isset($_POST['actionLogin']) && isset($_POST['user']) && isset($_POST['passwd']) && $_POST['user'] == "admin" && $_POST['passwd'] == "admin") { $_SESSION['user'] = $_POST['user']; $_SESSION['passwd'] = $_POST['passwd']; echo "true"; //successful log in } else if(isset($_POST['actionLogout']) && isset($_SESSION)) { foreach($_SESSION as $k => $v) { unset($_SESSION[$k]); } echo "false"; //successful log out } ?> 

Измените свой код, чтобы обработать форму, прежде чем она распечатает форму. Это может показаться интуитивно понятным, но если вы сначала не обработаете все входные данные, HTML, который вы напечатали, уже устарел, когда он готов к отправке в браузер.

Вам также не понадобится заголовок обновления, если вы используете ajax.

Просто измените свой код следующим образом:

 function loginLogout() { if(isset($_POST['login']) && isset($_POST['user']) && isset($_POST['passwd']) && $_POST['user'] == "admin" && $_POST['passwd'] == "admin") { $_SESSION['user'] = $_POST['user']; $_SESSION['passwd'] = $_POST['passwd']; } if(isset($_POST['logout']) && isset($_SESSION)) { foreach($_SESSION as $k => $v) { unset($_SESSION[$k]); } } $loggedUser = loggedUser(); if(!empty($loggedUser)) { logoutForm(); } else { loginForm(); } } с function loginLogout() { if(isset($_POST['login']) && isset($_POST['user']) && isset($_POST['passwd']) && $_POST['user'] == "admin" && $_POST['passwd'] == "admin") { $_SESSION['user'] = $_POST['user']; $_SESSION['passwd'] = $_POST['passwd']; } if(isset($_POST['logout']) && isset($_SESSION)) { foreach($_SESSION as $k => $v) { unset($_SESSION[$k]); } } $loggedUser = loggedUser(); if(!empty($loggedUser)) { logoutForm(); } else { loginForm(); } }