【发布时间】:2015-06-17 14:32:36
【问题描述】:
我目前正在尝试为我们的实验室建立一个简单的温度监控系统。它通过 Web 界面进行控制,该界面在 Dygraph 中绘制温度与时间的数据。温度数据被写入 mySQL DB。我正在尝试添加另一个输入字段,可用于选择要绘制的特定时间范围。 我目前正在使用 jQuery 日期框来选择似乎工作正常的时间窗口。我正在向查询数据库的 PHP 脚本发送 AJAX 请求。 PHP 脚本没有向我显示正确的数据点,而是仅输出内部服务器错误 (500)。当 PHP 的 $_POST 部分和 jQuery 脚本的数据部分被删除时,该脚本可以正常工作。
我最近的JS代码是:
$("#UpdateGraph").on("click", function(){
var startDate = $("#datestart").val();
var endDate = $("#datestop").val();
$.ajax({
url: "updateGraph.php",
data: {start : startDate,
stop : endDate},
datatype: "json",
type: "POST",
success: function(data) { DyGraph(data); }
});
});
jQuery 代码位于 $(document).ready() 环境中。 对应的 PHP 脚本如下所示:
<?php
$conn = new PDO("mysql:host=localhost;dbname=temperature", "USERNAME", "PASSWORD");
$results = array();
$startDate = $_POST['start'];
$stopDate = $_POST['stop']:
$query = "SELECT atime,temperature FROM temp WHERE atime BETWEEN '" . $startDate . "' AND '" . $stopDate . "';" ;
$stmt = $conn->prepare($query);
$stmt->execute();
while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
$results[] = $result['atime'].",".$result['temperature'];
}
print_r(json_encode(implode("\n+",$results)));
?>
任何建议我做错了什么?非常感谢!
【问题讨论】:
-
检查 PHP 日志,开启错误报告等。500 错误意味着服务器“幕后”存在错误。您需要先知道该错误是什么,然后才能更正它。
-
检查服务器日志以获取有关 500 的详细信息。您很容易受到 sql injection attacks 的攻击,并且通过执行
print_r正在输出损坏的 json。另外,为什么要在数组中构建 csv 字符串?为什么不建立一个常规数组?无论如何它都会被json'd。使用您的版本,您必须在 JS 中进行大量后期处理才能再次分离所有这些值。
标签: javascript php jquery mysql ajax