Javascript输出很奇怪

时间:2013-11-08 18:54:31

标签: javascript jquery json

我有一个

        <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  } }

问题是它只在存在时才输出。

如果我把

 $('#err_output').html( output + json.response.exist);
另一方面,

也会输出错误值。

2 个答案:

答案 0 :(得分:1)

这一行

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

正在与字符串"true"进行比较,但是您存储了一个布尔值true,它应该可以使用:

if (json.response.exist) {

答案 1 :(得分: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
}