Я посылаю запрос на запись к PHP скрипт через AJAX, как так:Сравнение строк 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 не преобразовывает это '0' из ответа ajax в целое число. '0 ===" 0 "' false в JS, потому что типы не совпадают (строка v.s. integer). –
Это потому, что '===' проверяет равенство по значению, но также и тип переменной. – D4V1D
Что говорит 'console.log (response.length)' вам? –