我是动态数据的新手,正在尝试
- 使用PHP从mysql数据库读取数据
- 将此数据转换为JSON
- 通过javascript(jQuery)获取数据
- 将它插入我的页面
就我所见,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",
因为您根本没有发送或使用任何数据。