我从服务器获取一些数据并显示在屏幕上。我的JavaScript如下所示,PHP服务器代码如下。我的问题是数据库返回null(例如,标题)。 PHP将其识别为NULL,而JavaScript又将其识别为null。然后我在屏幕上显示它,它不显示为null,但显示为“null”。我不希望显示文本“null”,但不显示任何内容。
作为解决方法,我可以将data.title
替换为((data.title)?data.title:'')
。这是处理它的最佳方式吗?
$.get('server.php',{id:1855},
function (data)
{
//data={"id":"1855","firstname":"Pat","lastname":"Prentice","title":null}
$('#my_id').html('<dl><dt>Name:</dt><dd>'+data.firstname+' '+data.lastname+'</dd>'+'<dt>Title:</dt><dd>'+data.title+'</dd>');
},'json');
server.php返回以下内容:
<?php
$sql_output=array('id'=> 1855, 'firstname'=>'Pat','lastname'=>Prentice,'title'=>NULL);
echo json_encode($array);
?>
答案 0 :(得分:1)
只需更改表单,您也可以使用OR
,例如dd>' + (data.title || '') + '</dd...
如果title
为undefined
或null
,则会使用空字符串。这看起来比(condition)?r1:r2
表格更容易阅读。但两者都是不可靠的,因为doublesharp在评论中指出。
答案 1 :(得分:1)
我建议将值设置为PHP代码中的空字符串。如果JavaScript中的语句将检查任何错误情况。
<?php
$sql_output=array('id'=> 1855, 'firstname'=>'Pat','lastname'=>Prentice,'title'=>NULL);
foreach ($sql_output as &$row){ // pass by reference
foreach($row as $key=>$value){
if ($value==null) $row[$key] = "";
}
}
echo json_encode($sql_output);
?>
答案 2 :(得分:0)
作为评论会提供最佳答案:
您还可以设置“”(或其他任何内容)的默认值 查询,以便它永远不会实际返回null
由于数据是从数据库中提取的,只需执行以下操作:
SELECT COALESCE(title,'') AS title, bla, bla, bla