2014-01-21 71 views
0

我有這個工作,但想在返回true後,將localstorage設置爲在mySQL查詢中傳遞的id的值。我不確定如何通過這個,因爲我的PHP目前只回應真或假。從mySQL獲取ID並使用php在ajax中設置localstorage

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#loginButton').click(function(){ 

      var username = $('#username').val(); 
      var password = $('#password').val(); 

      $.ajax({ 
       type: "POST", 
       url: "login.php", 
       cache: false, 
       data: { username: username, password: password }, 
       success: function(res) { 
        switch(res) { 
         case ('true'): 
          alert('true'); 
          break; 
         case ('false'): 
          alert('false'); 
          break; 

        } 
       } 
      }); 

      return false; 

     }); 

    }); 

</script> 


<?php 

$username = $_POST['username']; 
$password = md5($_POST['password']); 

if(!empty($username) && !empty($password)) { 
    $stmt = $conn->prepare("SELECT * FROM users WHERE username = :username AND password = :password"); 
    $stmt->bindValue('username', $username); 
    $stmt->bindValue('password', $password); 
    $stmt->execute(); 

    if($stmt->rowCount() == 0) { 
     echo 'false'; 
    } else { 
     echo 'true'; 

     while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
      $user_id = $row['user_id']; 
     }  
    } 
} 

$conn = null; 
?> 

回答

2

如果您想在使用AJAX時響應多個值,您可以使用JSON。

在PHP代碼應該是這樣的(貼吧後$stmt->execute();線,而不是if-else建設):

if($stmt->rowCount() == 0) { 
    echo json_encode(array('success' => false)); 
} else { 
    $row = $stmt->fetch(PDO::FETCH_ASSOC); 
    $user_id = $row['user_id']; 

    echo json_encode(array(
    'success' => true, 
    'user_id' => $user_id 
)); 
} 

然後在JavaScript中,你應該指定你期望JSON作爲響應。這是一個代碼:

$.ajax({ 
    type: "POST", 
    url: "login.php", 
    cache: false, 
    dataType: 'json', //this is where we specify JSON response 
    data: { username: username, password: password }, 
    success: function(res) { 
    if (res.success) { 
     localStorage.setItem('user_id', res.user_id); //set user id to local storage 
     alert(res.user_id); 
    } else { 
     alert('false'); 
    } 
    }, 
    error: function() { 
    //this will trigger in case the server send invalid JSON (or other types of errors) 
    alert('false'); 
    } 
}); 

我也建議在這種情況下使用GET方法,而不是POST。 POST通常用於需要更改某個服務器(數據庫,會話,文件系統等)的某些內容,但是當您只需要獲取某些數據時,最好使用GET。然而,沒有人會限制你按照你的意願去做,但我認爲最好遵循標準。

祝你好運!

+0

太棒了,這對我很好。我參加了POST v GET。 – user3189734

相關問題