2011-09-16 77 views
0

我正在构建一个登录表单,它将登录我而不刷新页面。Javascript/AJAX需要两次点击

我有以下页面:

INDEX.php 

    <script language="javascript"> 
    $(document).ready(function() 
    { 

//log in- send data to php page which creates a session. Log in div is reloaded to display log out button. 
     $("#login_form").submit(function() 
     { 
      $.post("php/loginajax.php",{emai:$('#emai').val(),pass:$('#pass').val()} ,function(data) 
      {   
      if(data=='yes') {$('#login').load('inc/headerlogin.php');} 
      if(data =='no') {$("#loginerror").show();}     
      }); 
      //return false; 
     }); 

//log out- destroy session and reload log in div to display log in form again. 
     $("#logout").click(function() 
     { 
      $.post("php/loginout.php"); 
      $('#login').load('inc/headerlogin.php'); 
     }); 

    }); 
    </script> 

注销按钮的工作原理细点击一次,会被破坏,登录DIV重新加载显示。

如果首页加载时登录按钮有效。 如果登录,然后注销然后再次尝试登录,全部在同一页面上而不刷新它需要点击两次登录按钮。

此外,我已经散布在if语句之前和它们内部的一些警报,但即使其余的代码工作,这些都没有显示......任何想法?

+0

在你第一次点击时,POST不成功,因此成功函数没有被调用。即您的服务器出现问题。 –

+0

我没有这样想过,但是当我在新页面上点击它时,它第一次工作。这是当我注销,然后尝试登录同一页面而不刷新我必须点击两次。 – penpen

+0

什么是inc/headerlogin.php,你为什么需要在注销后再次加载()?如果该文件包含你的JS,那么'$(document).ready()'会再次运行并注册第二个'submit'处理程序。 –

回答

0

一直回头看我的问题,看来我应该已经作出实际的表单直播:

$("#login_form").live("submit", function(event) { });" 
1

如果注销按钮重装,我想ü必须使用的活,而不是点击

$("#logout").live('click',function() 
    { 
     $.post("php/loginout.php"); 
     $('#login').load('inc/headerlogin.php'); 
    }); 

我希望这可以帮助你..

+0

谢谢,但注销按钮没问题,它是我已经注销并且未刷新的页面上的登录表单。 – penpen

+0

重温我的老问题,你是部分正确的!我应该使用“$(”#login_form“)。live(”submit“,function(event){});” – penpen