2011-09-16 91 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

相關問題