我有一个简单的PHP代码,该代码从数据库中检索信息,并将其存储在多维数组中:
<?php
//Fetches the mediainfo entries to populate the webpage, up to as many are in the DB.
error_reporting(E_ALL);
$db = new mysqli("localhost","root","pass", "Media");
if($db->connect_errno > 0){
echo "ERROR";
die('Unable to connect to database [' . $db->connect_error . ']');
}
$data_array=array();
$sql = "SELECT * FROM mediainfo;";
// echo $sql;
$result = mysqli_query($db,$sql);
if($result && mysqli_num_rows($result) > 0){
$row=mysqli_fetch_all($result,MYSQLI_ASSOC);
mysqli_close($db);
for($i = 0; $i < count($row);$i++){
$data_array[$i][0] = $row[$i]['ID'];
$data_array[$i][1] = $row[$i]['IMGPATH'];
$data_array[$i][2] = $row[$i]['TITLE'];
$data_array[$i][3] = $row[$i]['RATING'];
$data_array[$i][4] = $row[$i]['POSITION'];
}
//echo $data_array[0][0];
return $data_array;
if(!empty($data_array))
{
$data_array[0][0] = "ERROR";
return $data_array;
}
else{
$data_array[0][0] = "ERROR";
return $data_array;
}
}
else{
$error[0][0] = "error";
return $error;
}
//$JSONString = json_encode($data_array);
// return $data_array;
?>
忽略冗余数组填充物,那只是我测试值。
JS是:
function loadMedia(){
console.log("please work");
$.post("getMedia.php",
{
success: function(data){
console.log(data[0][0]);
}})
}
我只是想打印第一行的第一个元素,以查看它是否存在。目前,它只是打印"未定义"。如果有人能提供任何见解,将不胜感激。
我只想强调,我确实知道,返回时数组已满。谢谢
更新因此,经过一些快速响应(谢谢),我尝试了以下内容:
if($result && mysqli_num_rows($result) > 0){
$row=mysqli_fetch_all($result,MYSQLI_ASSOC);
mysqli_close($db);
$JSONString = json_encode($row);
return $JSONString;
和:
<script>
function loadMedia(){
console.log("please work");
$.post("getMedia.php",
{
success: function(data){
console.log(data);
}})
}
</script>
不幸的是它具有相同的结果。
第二个更新因此,我添加了标题('content-type:application/json。');以及用按钮明确调用PHP文件后,为JSON字符串启动了下载。进步! PHP不会从我的Ajax调用中自动运行。或更确切地说,它仍然返回未定义的。
我修复了它。我只是从使用$。 -post,$ .ajax格式更改了,它起作用了。非常令人沮丧,我对为什么有效的理解没有理解。如果您是遇到类似问题的新手,这里还有一个可以尝试的解决方案!感谢所有的回答。