2011-02-28 55 views
1

我正在使用jquery ajax来设置登录会话,但由于某种原因,会话没有设置,除非我刷新页面,以达到ajax的目的。我不知道如何解决这个问题。这里是我的代码: $( “#登入”)点击(函数(){ 变种的电子邮件= $( “#注册邮箱”)ATTR( '值');使用jquery ajax设置会话问题

 var password=$("#loginpassword").attr('value'); 

     if(email==""&&password=="") 
     { 
      $("#loginemail").animate({backgroundColor:"red"},4000); 
      $("#loginpassword").animate({backgroundColor:"red"},4000); 
      return false; 
     } 
     if(email=="") 
     { 
      $("#loginemail").animate({backgroundColor:"red"},4000); 
      return false; 
     } 
     if(password=="") 
     { 
      $("#loginpassword").animate({backgroundColor:"red"},4000); 
      return false; 
     } 
     if(email!=""&&password!="") 
     { 
      var loginemail=$("#loginemail").attr('value'); 

      var loginpassword=$("#loginpassword").attr('value'); 

      $.post("phpfiles/loginvalidation.php",{loginemail:loginemail,loginpassword:loginpassword},function(data){ 
       if(data.success) 
       { 
     $("#theuser").html(data.loggedinuser); 

    $("#loginerror").html("<p>You are logged in.</p>").slideDown(); 

        $("#SignUpandIn").fadeOut(); 

       } 
       else 
       { 
    $("#loginerror").html("<p>Wrong email or password.</p>").slideDown(); 
       } 
      },'json'); 

      return false; 
     } 
    }); 

PHP:。

<?php 
require_once('../Connections/gamesRusconn.php'); 
error_reporting(E_ALL^E_NOTICE); 

if(!isset($_SESSION)) 
{ 
     session_start(); 
} 

mysql_select_db($database_gamesRusconn, $gamesRusconn); 

$emailaddress=$_POST['loginemail']; 

$password=$_POST['loginpassword']; 

$hashedPassword=$password; 

//This query compares login details entered by user against the details in the database. 
$loginSQL=mysql_query("SELECT * FROM customers WHERE EmailAddress='".$emailaddress."' AND CustPassword='".$hashedPassword."'",$gamesRusconn) or die(mysql_error()); 

$customers=mysql_fetch_assoc($loginSQL); 

$loginrows=mysql_num_rows($loginSQL); 

$activeSQL=mysql_query("SELECT * FROM customers ",$gamesRusconn) or die(); 

if($loginrows>0) 
{ 

    $fullname=$customers['FirstName']." ".$customers['Surname']; 

    $email=$customers['EmailAddress']; 

    $_SESSION['loggedInName']= $fullname; 

    $_SESSION['username']=$email; 

    $data['success']=true; 

    $data['loggedinuser']=$fullname; 

} 

elseif($loginrows==0) 
{ 
    $data['success']=false; 

} 
echo json_encode($data); 
?> 

回答

2

jQuery的Ajax是asynrounous恰好paralley,所以你不能指望它在顺序complemeted,所以在回调保证了AJAX调用完成你的逻辑。

我给一些示例代码

$.ajax({ 
    url: "test.html", 
    context: document.body, 
    success: function(){ 
    **write your session related logic here** 
    } 
}); 
+0

有道理,但我将如何在回调方法中分配$ _SESSION变量,因为它在PHP中看起来像是javascript。请请点亮一些灯。 – John