我有一个
<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);
另一方面,也会输出错误值。
答案 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
}