【问题标题】:Ajax not submitting form all the timeAjax 一直没有提交表单
【发布时间】:2011-09-16 20:32:19
【问题描述】:

我正在通过 ajax 将表单提交到 PHP 代码页面,该页面将设置会话或不设置会话。这就是发生的事情:

  • 通过ajax提交到login.php的表单
  • login.php 要么设置会话,要么不设置
  • loginform.php 重新加载到页面上的 div 中(页面本身没有重新加载 ($('#login').load('loginform.php');)
  • loginform.php 检查会话是否设置,然后显示登录表单或注销按钮

.

如果我在新页面上登录,它可以正常工作。

如果我已经登录,则退出此操作并再次显示登录表单。 但是,如果我再次尝试从这里登录同一页面,则不会设置会话。 我在 PHP 中输​​出我的会话,注销时我有这个:

Notice: Undefined index: log in...

在同一页面上注销后尝试登录时,我得到了这个:

Notice: Undefined variable: _SESSION in...

有什么想法吗?

编辑: 这是一些代码-

INDEX.PHP

<script language="javascript">
$(document).ready(function()
{
  $("#login_form").submit(function(event)
  { 
     $.post("login.php",{emai:$('#emai').val(),pass:$('#pass').val()} ,function(data)
     {
        //if login.php echos "no" then an error box is displayed, else it refreshes the login div to hopefully display a log out link
        if(data!='no') {$('#login').load('loginform.php');}
        if(data =='no') {$("#loginerror").show();}
     });  
  })

   //the session is destroyed in logout.php, then the form reloaded.
   $("#logout").click(function()
   {
       $.post("logout.php");
       $('#login').load('loginform.php');});
   });
</script>

</head>
<body>

<?
include ('inc/classes.php');
session_start();
?>

<div class="header">  
       <div id="login"><? include ('inc/headerlogin.php');?></div>
</div>

LOGIN.PHP

//just searching the database for a match and setting the session. Echos yes or no.
<?   
session_start();

include ('../inc/classes.php');
$emai=$_POST['emai'];
$pass=$_POST['pass'];

$Query="SELECT * FROM users WHERE emai ='".$emai."' AND pass='".$pass."'";
$Sel = new Database;
$Sel->nextRecord();
$Sel->Query($Query);

if ($Sel->numRows() == 1) {$_SESSION['log'] = $Sel->Record['id']; $login = "yes";}
else {$login = "no";}
echo $login;
?>

LOGINFORM.PHP

<?
echo $_SESSION['log']; 
//if session is set display sign out link
if(isset($_SESSION['log']))
{
?>
    <a id="logout">sign out</a>

<? } //else display form again
else
{?>    
<div id="loginerror">Wrong password</div>
<form method="post" action="" id="login_form">
   <input name="email" type="text" value="" id="emai"/>
   <input name="pass" type="password" id="pass"/>
   <input name="signin" type="submit" value="sign in" id="signbutton"/>
</form>    
<? } ?>

【问题讨论】:

  • 我们能看到一些适用的代码吗?
  • 你会在你的 php 顶部做一个session_start(); 吗?
  • 请在您的问题中添加一些代码...
  • 您是否在注销后破坏了您的会话?确保在 loginform.php 中再次启动它
  • 嗨,我已经添加了一些代码。希望这能让事情变得更清楚一些。我正在正确地开始和销毁我的会话。

标签: php jquery ajax session


【解决方案1】:

首先确保您拥有 id 为“login”的 html 元素,然后确保在 PHP 文件的开头放置一个 session_start() 函数

【讨论】:

    猜你喜欢
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 2021-12-21
    • 2020-08-03
    • 2015-01-10
    • 1970-01-01
    • 2013-04-30
    相关资源
    最近更新 更多