我通過AJAX發送POST請求的PHP腳本像這樣:JQuery字符串比較返回不正確的值?
$.post("login.php", {u: username,p: password})
.done(function(response){
console.debug(response);
if (response === "0") {
$("#loginMessage").html("Invalid Username or Password");
} else {
$.mobile.changePage("#homePage");
}
})
而且login.php
片段。如果登錄憑證失敗,我回復"0"
。我相信這將輸出一個字符串,因爲它是在引號,而不是echo 0;
if ($stmt->num_rows > 0 && password_verify($password,$hashedPassword)) {
$_SESSION["uid"] = $uid;
} else {
echo "0";
}
然而,當我輸入無效憑證比較response === "0"
正在恢復FALSE
,雖然當我使用console.debug(response)
,它表明這是確實是0
。
經過我自己的一些小竅門,我發現如果我將response === "0"
更改爲response == 0
,它會正確評估爲true
。
response === 0
也評估爲FALSE
,這使我更加困惑。
有人可以爲我解釋這一點嗎?
請確保(無論出於何種原因),js不會將ajax響應中的'0'轉換爲整數。在JS中,0 ===「0」是錯誤的,因爲類型不匹配(string v.s. integer)。 –
這是因爲'==='檢查值是否相等,但是也檢查變量的類型。 – D4V1D
'console.log(response.length)'告訴你什麼? –