我真的很想在我的网页上显示仪表,它使用MySQL数据库中的新数据进行自我更新。我有几个文件可以让它工作,但它不起作用。第一个文件称为data.php它包含(对不起,荷兰语评论):
<?php
// Datum aanmaken om bovenaan de pagina te zetten
date_default_timezone_set('Europe/Amsterdam');
$vandaagtijd = date("d-m-Y, H:i");
include_once "/externalpw/mysql_pw.php";
$link = mysql_pconnect($MyHostname, $MyUsername, $MyPassword) or die("Error verbinden met DB: " . mysql_error());
//Eerst de elektra en het gas selecteren in die database en dan daarmee aan de gang
$db = mysql_select_db("elekgas", $link);
if (!$db) {
mysql_close($link);
die("Error selecteren DB: " . mysql_error());
}
// Actuele waaarden op van huidig verbruik en meterstanden
$result1 = mysql_query("SELECT gebr_laag_tarief AS glt, gebr_hoog_tarief AS ght, leve_laag_tarief AS llt, leve_hoog_tarief AS lht, huidig_verbruik AS hv, huidig_levering AS hl, gas FROM meetwaarden ORDER BY id DESC LIMIT 1");
if (!$result1) {
mysql_close($link);
die("Error met query1: " . mysql_error());
}
while ($row = mysql_fetch_assoc($result1)) {
$data[] = $row;
}
?>
var jsonarray = <?php echo json_encode($data); ?>;
在第二个文件,我的主文件中,我有这个部分来刷新 php 输出:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.ajaxSetup({ cache: false });
$.post('index4.php'), function(data){
$(data.result).each(function(i, item){
$.append("<?= $" + item.key + " = " + item.value + "; ?>");
});
}, "jsonp");
});
</script>
我要刷新的div 基本上什么都不包含。我只想为仪表返回一个新值。仪表本身将使用间隔函数进行自我更新。为清楚起见,该仪表代码如下。但是,会发生什么,它会返回 NaN(不是数字)。我觉得需要在这里暗示一些JSON_encode才能让它一切正常,但我不知道如何让它继续下去。
在数据中.php echo JSON_encode($result1);
似乎是一个好的开始,但是如何在主文件中将其取出呢?显然,负载('数据.php')不是这里的方式......
<canvas id="gauge2"
width="200" height="200"
data-type="canv-gauge"
data-title="Vermogen"
data-min-value="0"
data-max-value="400"
data-major-ticks="0 100 200 300 400"
data-minor-ticks="5"
data-stroke-ticks="true"
data-units="kWh"
data-value-format="3.2"
data-glow="true"
data-animation-delay= false
data-animation-duration=
data-animation-fn=
data-colors-needle="#dd0000 #0000ff"
data-highlights="0 100 #a9feff, 100 300 #bbffaa, 300 400 #ffffaa"
data-onready="setInterval( function() { Gauge.Collection.get('gauge2').setValue(<?= $hl; ?>);}, 5000);">
</canvas>
我知道这些问题已经多次出现,但就AJAX和JSON而言,我并不是真正的明星。因此,感谢所有帮助!谢谢。
你应该在JS中使用jQuery的post
,在PHP中使用json_encode
。
一旦你有一个复杂的JSON对象,阅读访问/处理(嵌套)对象,数组或JSON以了解如何访问其项目,然后尝试我为你编写的这个JSFiddle示例,它从iTunes的公共API获取歌曲列表并将它们放在一个表中。
为了方便起见,我在这里发布了我的解决方案。
PHP 文件:
while ($row = mysql_fetch_array($result1)) {
$data = $row;
}
//echo json_encode($data, JSON_NUMERIC_CHECK);
array_push($json, $data);
echo json_encode($json);
?>
JS部分:
<script type="text/javascript">
var glt;
var ght;
var llt;
var lht;
var hv;
var hl;
var gas;
$(document).ready(function() {
$.ajax({
type: "POST",
url: "data.php",
dataType: "JSON",
success: function(data){
glt = data[0].glt;
ght = data[0].ght;
llt = data[0].llt;
lht = data[0].lht;
hv = data[0].hv;
hl = data[0].hl;
gas = data[0].gas;
}
});
});
</script>
仪表部分只是使用我想要显示的正确变量。
非常感谢阿莱西奥·坎塔雷拉的帮助。最后,他确实为我指出了正确的方向:)