[英]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.