簡體   English   中英

JQuery Post和接收PHP登錄數據

[英]JQuery Post and Receive PHP login Data

我提前道歉似乎是一個重復的問題,但我真的被卡住了。 我發送登錄信息到php頁面驗證用戶名和密碼。 它工作得很好,因為它表示成功或失敗取決於用戶信息是否存在,如圖所示。 發布回應

我想要做的是將$ user值發送回我的javascript頁面,然后如果它返回“ok”則將它們重定向到用戶頁面。 我不能為我的生活弄明白該怎么做。

這是我的Javascript:

function Userlogin() {
    $.post("login.php",
    {            
        username: $("#login_username").val(),        
        pass: $("#login_password").val()
        success: function(user){
            alert("Done!");
        }
    }
},

這是我的PHP:

$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['pass']);

echo $username;

$login = mysqli_query($conn, "SELECT * FROM users where username = '$username' and password = '$password'");
$num_rows = mysqli_num_rows($login);

printf("Result set has %d rows.\n", $num_rows);

mysqli_free_result($login);

if ($num_rows == 1) {
    echo "Success";
    $user = "ok";
} else {

}

echo json_encode($user);
mysqli_close($conn);

任何幫助將不勝感激。 提前致謝!

function Userlogin() {
   $.post("login.php",
    {            
        username: $("#login_username").val(),        
        pass: $("#login_password").val()
    },function(user){
            console.log(user)//You'll see what your PHP sent you.
            if(user == "ok"){
                //Redirect
            }else{
               alert("You shall not pass!");
            }
        }
    );
 }

現在的訣竅是確保PHP返回ok 您也可以發送JSON,因為您嘗試了一下。 但是看看console.log結果,你會發現主要的問題是你的回聲和打印。 您不應該輸出無用的信息,因為您需要相應地處理答案。

要回答您的評論:查看您的請求響應屏幕截圖,您將收到3 echo / print的內容:

printf("Result set has %d rows.\n", $num_rows);
echo "Success";
echo json_encode($user);

編輯上面這樣的PHP代碼部分,用於發送具有登錄狀態和用戶詳細信息的json響應

    if($num_rows == 1) {
        $user = $login->fetch_assoc()[0]['username'];
        $data=array("status"=>"1","user"=>$user);

    } else {
      $user = "";
        $data=array("status"=>"0","user"=>$user);
    }
   echo json_encode($data);

在你的前端javascript代碼解析json響應並使用該信息重定向到用戶頁面

function Userlogin() {
$.post("login.php",
    {    

    username: $("#login_username").val(),        
    pass: $("#login_password").val()

    success: function(response){
        var data = JSON.parse(response);
        if(data.status==="1")
          window.location = "http://example.com/page.php?user="+data.user;
        else alert("Wrong Username or password");
    }
},

PS:不要打印或回顯服務器端代碼中的任何其他內容,否則您將在前端遇到JSON pasring錯誤。

您將success回調作為請求參數傳遞。 試試這個:

function Userlogin() {
    $.post("login.php", {
        username: $("#login_username").val(),        
        pass: $("#login_password").val()
    }, function(user){
        alert("Done!");
    });
}

您可以在PHP中回顯以在javascript中使用。

在Javascript中更改代碼:

  $.post("login.php",
  {            
    username: $("#login_username").val(),        
    pass: $("#login_password").val()
    success: function(user){
         if(user == "ok"){
               //redirect
          }
    }
  },

在PHP中更改代碼:

$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['pass']);
$login = mysqli_query($conn, "SELECT * FROM users where username = '$username' and password = '$password'"); 
$num_rows = mysqli_num_rows($login);
printf("Result set has %d rows.\n", $num_rows);
mysqli_free_result($login);
if($num_rows == 1) {
    echo "ok"
} else {

}
mysqli_close($conn);

在php中,只需在成功時回復即可,並在javascript中使用相同的功能來驗證它。

如果您想從您的請求中獲取響應,請在php中創建一個數組或變量,並附加您的響應,如下所示:

$responseData['data']['User'] = $User;

其中$ responseData是一個數組。

在你的JS里面:

if($User) {
echo'<script>window.location="your landing page";</script>';
end();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM