AJAX 正在返回'undefined'尽管我知道变量是尝试返回不为空



我有一个简单的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格式更改了,它起作用了。非常令人沮丧,我对为什么有效的理解没有理解。如果您是遇到类似问题的新手,这里还有一个可以尝试的解决方案!感谢所有的回答。

最新更新