如何取回我的数据


How to get my data back

我是动态数据的新手,正在尝试

  1. 使用PHP从mysql数据库读取数据
  2. 将此数据转换为JSON
  3. 通过javascript(jQuery)获取数据
  4. 将它插入我的页面

就我所见,1)和2)工作得很好,3)似乎是一种工作,4)是它断裂的地方。

我已经建立了数据库和表,查询&像这样回显数据(api.php)

<?php 
  include 'db.php';
  $con = new mysqli($host,$user,$pass,$databaseName);
  /* check connection */
if (mysqli_connect_errno()) {
  printf("Connect failed: %s'n", mysqli_connect_error());
  exit();
}
  $query = "SELECT * FROM $tableName";
  $myArray = array();
  if ($result = $con->query($query)) {
    $tempArray = array();
    while($row = $result->fetch_object()) {
      $tempArray = $row;
      array_push($myArray, $tempArray);
    }
    echo json_encode($myArray);
  }
  $result->close();
  $con->close();
?>

现在我通过javascript获得它。。。

jQuery(function($) {    
    $.ajax({                                      
        url: 'php/api.php',
        data: "json",
        dataType: "",    
        success: function(data) {
            var r = new Array(), j = -1;
            for (var key=0, size=data.length; key<size; key++){
                r[++j] ="<tr><td>";
                r[++j] = data[key][0];
                r[++j] = "</td><td>";
                r[++j] = data[key][1];
                r[++j] = "</td><td>";
                r[++j] = data[key][2];
                r[++j] = "</td></tr>";
            }
            var joined = r.join('');
            console.log(joined);
            $('#maintable tbody').html(joined);    
        }
    });
});

然后把它扔到我桌子的tbody元素里。

结果绝对不是我所期望的:

请参阅https://i.stack.imgur.com/L9RZP.jpg(抱歉部分德语界面)

GET请求的答案是有效的JSON,至少在理论上是这样(由http://jsonlint.com/),但对我来说,数据似乎被视为一个字符串,并被拆分为一个字符数组(每个字符都是data[]中的"键"),因此"data[key][1]什么都不返回。

var json = JSON.stringify(eval("(" + data + ")"));

继续使用json[key][0]没有帮助。。。

现在我想知道为什么,特别是出了什么问题以及如何修复

您混淆了ajax调用中的密钥:

    data: "json",
    dataType: "",    

应为:

    dataType: "json",

因为您根本没有发送或使用任何数据。