у меня есть
<p id="err_output"></p>
на моей странице он связан с этим javascript:
$(document).ready(function($) {
$("#username").on('keyup',check_username_existence);
});
Функция такова:
function check_username_existence(){
$.ajax({ url: './php/user_name_availability.php',
data: { username : $('#username').val() },
type: 'post',
success: function(output) {
var json = $.parseJSON(output);
$('#err_output').html(json.response.exist);
if(json.response.exist == 'true'){
// $('#err_output').html('Exists');
}
}
});
};
значения для json-ответа:
{ "response" : { "exist" : true } }
{ "response" : { "exist" : false } }
Проблема в том, что она выводится только тогда, когда существует true.
Если я поставлю
$('#err_output').html( output + json.response.exist);
с другой стороны, он также выдавал бы ложные значения.
Эта строка
if(json.response.exist == 'true'){
По сравнению со строкой "true"
, но у вас есть логическое значение true
, оно должно работать с:
if (json.response.exist) {
Потеряйте кавычки и используйте оператор идентификации (===). Это даст вам результат, который вы ожидаете
if(json.response.exist === true){
Слабые сравнения могут дать вам странные результаты. Вот пример того, почему он оценивает то, как он находится в вашем коде.
bool = "false";
if(bool){
// bool evaluates to true because it is defined as a string
}
bool = 'true';
if(bool == true){
// doesn't execute. comparing string to boolean yields false
}