【发布时间】:2015-12-24 18:44:13
【问题描述】:
我正在使用 jQuery Ajax 和 JSON 从 MySQL 获取数据。但是我需要知道响应何时为空。我将一个日期参数传递给我的 php,它将返回一些数据或不返回...取决于日期。
我的 Javascript 代码(简单版):
function pac_irra(date){
.ajax({
url: 'get_db_data/pac_irra.php?date='+date,
dataType: 'JSON',
type: 'POST',
data: {get_values: true},
beforeSend: function(){
$("#morris-line-chart").append(load_img);
},
success: function(response) {
date = response[0].Timestamp;
$('#a1').append(date);
},
});
}
例如,如果我使用了昨天 (2015-09-26) 的数据,我会得到以下 json 数据(只是其中的一部分):
[{"Timestamp":"2015-09-26 16:50:00","pac":"35.20","irra":"38.97"},{"Timestamp":"2015-09-26 17:00:00","pac":"32.19","irra":"35.51"}]
现在,例如,如果我选择了一个没有返回数据的日期:
[]
在下面的 javascript 代码中,我想在我的成功函数中添加一个 if 语句,以防 json 数组为空...类似于:
function pac_irra(date){
.ajax({
url: 'get_db_data/pac_irra.php?date='+date,
dataType: 'JSON',
type: 'POST',
data: {get_values: true},
beforeSend: function(){
$("#morris-line-chart").append(load_img);
},
success: function(response) {
date = response[0].Timestamp;
$('#a1').append(date);
if ( ***array is empty***) {
('#a1').append('No data');
};
},
});
}
在我的成功函数中,我有一个使用 json 数据创建的莫里斯图...我没有把它放在代码中...
那么我如何检查它是否为空?我已经做了很多尝试:
if (response.length == 0)
或其他尝试
if (response[0].Timestamp == "") or if (!response)
没有任何效果...我仍然无法检查 json 数组是否为空...
我的php代码:
<?php
error_reporting(0);
$path = $_SERVER['DOCUMENT_ROOT'];
$path .= "/database/db_connect.php";
include_once($path);
if(isset($_GET['date'])) {
$date = $_GET['date'];
$days = $_GET['days'];
$var = array();
$query = "SELECT CONVERT_TZ(CONCAT(Date,' ',pac.Time), 'UTC', 'Europe/Lisbon' ) as Timestamp, ROUND((pac.Value/6440)*100,2) pac, ROUND((irra.Value/1000)*100,2) irra
FROM AggData pac
LEFT JOIN (SELECT Time, Value
FROM AggData WHERE Date=DATE_ADD('$date',INTERVAL '$days' DAY) and idEquipment=5 and idMeasure=6 ) irra
ON pac.Time=irra.Time
Where pac.Date=DATE_ADD('$date',INTERVAL '$days' DAY) and pac.idEquipment=1 and pac.idMeasure=3
AND (irra.Value>0 or pac.Value>0)
Order BY pac.Time asc
" or die("Error in the consult.." . mysqli_error($link));
$result = $link->query($query);
while($obj = mysqli_fetch_object($result)) {
$var[] = $obj;
}
echo json_encode($var);
}
?>
【问题讨论】:
-
你可以使用 response.length == 0
-
var rep = JSON.parse(response); if(rep != null || rep == "") -
aldrin27 不起作用 :(
-
为什么不在后端发送响应之前检查查询结果是否为空?然后返回一个字符串“No result Found”,如果它是 null 以及一个状态错误。
标签: php jquery mysql json ajax