0

我正在从服务器获取一些数据并显示在屏幕上。我的 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);
?>
4

3 回答 3

1

我建议在您的 PHP 代码中将该值设置为空字符串。JavaScript 中的 if 语句将检查任何错误条件。

<?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);
?>
于 2012-10-09T17:00:22.777 回答
1

只是为了改变形式,你也可以使用OR例如dd>' + (data.title || '') + '</dd...

如果titleundefinednull,则将使用空字符串。(condition)?r1:r2这看起来比表格更容易阅读。但正如 doublesharp 在评论中指出的那样,两者都不可靠。

于 2012-10-09T16:52:06.033 回答
0

将提供最佳答案作为评论:

您还可以从查询中设置默认值“”(或其他任何值),以便它实际上永远不会返回 null

由于数据是从数据库中提取的,只需执行以下操作:

SELECT COALESCE(title,'') AS title, bla, bla, bla
于 2012-10-16T15:59:33.133 回答