显示服务器错误而不是从数据库加载数据

时间:2021-04-18 15:37:23

标签: javascript php sql ajax http-status-code-500

我不知道我错过了什么。我正在尝试将数据库中的数据加载到导航栏中。导航栏应该为管理员、签名用户和其他用户提供不同的链接。由于我还没有创建用于登录和注册的页面,因此我假设使用 AJAX 调用的页面 showMenu.php 中的代码将采用从 functions.php 加载的最后一个函数,这是对未登录用户的查询。但是,不是从数据库中取回数据以使用 JS 编写,代码属于 AJAX 调用的错误属性,此外还显示 showMenu.php 页面的服务器错误 500。我检查了 main.js 和 php 页面的所有路径以及数据库中表和列的名称,一切都是正确的。并且只是为了记录,connection.php 包含 fetch 模式,因此可以使用 -> 访问表的列。我错过了什么。

js 代码

getViaAjax("showMenu",showMenu);
function getViaAjax(fileName, specificFunction) {
  $.ajax({
    url: "models/" + fileName + ".php",
    method: "get",
    dataType: "json",
    success: function(jsonData){
      specificFunction(jsonData);
   },
    error: function(xhr){
      console.error(xhr);
   }
  });
}
function showMenu(menuJsonData){
    let writingMenu = "";
    menuJsonData.forEach(partOfMenu=>{
        writingMenu+=`<li id="${partOfMenu.id}" class="nav-item">
          <a class="nav-link" href="${partOfMenu.href}">${partOfMenu.label}</a>
        </li>`;
    });
    document.getElementById("menu").innerHTML=writingMenu;
}

showMenu.php

<?php
    session_start();
    if($_SERVER['REQUEST_METHOD'] == 'GET'){
        include "../config/connection.php";
        include "functions.php";

        try{
            if(isset($_SESSION['user'])){
                $user = $_SESSION['user'];
                if($user->roleId==1){
                    $jsonMenu = showMenuForAdmin();
                }
                else {
                    $jsonMenu = showMenuForSignedInUser();
                }
            }
            else{
                $jsonMenu = showMenuForNonSignedInUser();
            }
            echo json_encode($jsonMenu);
            http_response_code(200);
        }
        catch(PDOException $exception){
            http_response_code(500);
        }
    }
    else{
        http_response_code(404);
    }
?>

functions.php 中的函数我想在用户未注册或签名时触发

function showMenuForNonSignedInUser(){
        global $connection;
        $query = "SELECT id, href, label WHERE id NOT LIKE 6;";
        $data = $connection->query($query)->fetchAll();
        return $data;
    }

0 个答案:

没有答案