【问题标题】:Get ID from mySQL and set localstorage in ajax with php从 mySQL 获取 ID 并使用 php 在 ajax 中设置 localstorage
【发布时间】:2014-02-11 12:50:27
【问题描述】:

我已经完成了这个工作,但希望在返回 true 后将 localstorage 设置为 mySQL 查询中传递的 id 的值。我不确定如何通过这个,因为我的 php 目前只回显真或假。

<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; 
?>

【问题讨论】:

    标签: javascript jquery mysql ajax local-storage


    【解决方案1】:

    如果您想在使用 AJAX 时响应多个值,您可以使用 JSON。

    在 php 代码中应该是这样的(将其粘贴在 $stmt-&gt;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。但是没有人限制你为所欲为,但我认为最好遵循标准。

    祝你好运!

    【讨论】:

    • 太棒了,这对我来说非常有用。我接受了 POST v GET。
    猜你喜欢
    • 2018-02-21
    • 1970-01-01
    • 2017-04-09
    • 2021-10-25
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2018-08-05
    相关资源
    最近更新 更多