Вывод Javascript действует странно

0

у меня есть

        <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);

с другой стороны, он также выдавал бы ложные значения.

Теги:

2 ответа

1

Эта строка

if(json.response.exist == 'true'){

По сравнению со строкой "true", но у вас есть логическое значение true, оно должно работать с:

if (json.response.exist) {
  • 0
    Спасибо. Я думаю, что я был испорчен автопередачей php.
0

Потеряйте кавычки и используйте оператор идентификации (===). Это даст вам результат, который вы ожидаете

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
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню