我正在運行一個AJAX調用,它有一個成功的函數,它接受像這樣從php頁面返回的變量。Javascript/PHP字符串相等
AJAX:
$.ajax ({
type: "POST",
url: "loginrequest.php",
data: 'username=' + username + '&password=' +pass,
success: function(html){
console.log(html); // returns login
console.log(typeof html); // returns string
console.log(html === "login"); //returns false
if(html === 'login'){
window.location.href = 'index.php';
}
else if(html === 'false'){
alert("login failed");
}
}
});
PHP:
if($count == 1){
$_SESSION['user'] = $myusername;
$return = "login";
echo json_encode($return);
}
else {
$return = "false";
echo json_encode($return);
}
正如你可以看到,我想實現簡單的登錄頁面,然後將用戶重定向或顯示這取決於成果警報從我的數據庫查詢返回的行數。
我不明白這是:
console.log(html); // returns "login"
console.log(typeof html); // returns string
console.log(html === "login"); //returns false
我嘗試回聲ING沒有json_encode()
,它仍然會給我同樣的結果。我正在使用==
,但後來我發現使用===
更安全,因此我切換到了該選項,但它仍然不會返回true。
要解決眼前的問題,請嘗試'的console.log(html.trim()=== 「登錄」);'。 'trim()'在處理純文本時刪除可以附加到響應中的額外空白。作爲一種改進,返回JSON來完全避免這個問題。 –
'json_encode'在字符串中加上''',所以你實際上用引號括起來''login''看一看:[https://eval.in/600312](https://eval.in/600312 ) – FirstOne
生成的'json'的快速'var_dump'會很容易地顯示出問題;) – FirstOne