【问题标题】:Ajax to pull data from mySQLAjax 从 mySQL 中提取数据
【发布时间】: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


【解决方案1】:

我猜,您的错误根源是 $stopDate = $_POST['stop']: 行中的语法错误 行尾有一个冒号。您应该将其更改为分号。

服务器上 php 脚本中的语法错误将在 http 客户端中显示错误 500。我建议你使用 linter 来避免这种错误。所有流行的编辑器都有这个插件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    相关资源
    最近更新 更多