【发布时间】:2015-12-31 18:22:43
【问题描述】:
我经常有一些 JavaScript 从服务器的数据库中接收数据并将其呈现在页面上。
$.getJSON( 'ajax.php',{id:$('bla').val()}, function(json) {
$('#myClone').clone().removeAttr('id').text('json.a').appendTo(whatever)
});
ajax.php
$sql='SELECT a,b,c FROM t WHERE id=?';
$stmt = $conn->prepare($sql);
$data=array($_GET['id']);
$stmt->execute($data);
header('Content-Type: application/json;');
echo(json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)));
当数据库包含给定列的 NULL 并且关联的 JSON 包含不带引号的 null 时出现问题,HTTP 传输的 JSON 字符串仍然带有 null 不带引号,但 JavaScript/jQuery 似乎可以转换它转换成字符串"null",页面上显示null,而不是所需的空字符串。
如何最好地纠正这个问题?应该做服务器端还是客户端?如果是服务器端,应该在数据库级别使用SELECT IFNULL(a,"") 之类的东西完成,还是 PHP 应用程序级别?
【问题讨论】:
-
“最佳”是情境性的。选择适合你的。
-
@JohnHascall 这就是我在问题中包含这种情况的原因。包含文本的元素被附加到另一个元素。
-
这对我来说听起来像是一个客户端错误,所以我的第一次尝试是在客户端解决它。
-
@user1032531 情况通常更复杂。你有多少控制权?例如,当我控制 DB 模式时,我会寻求没有空值的设计。
-
@JohnHascall 我有完全的控制权。我通常只对 FK 列和其他特殊情况强制使用无空值。
标签: javascript php jquery mysql json