我不知道我错过了什么。我正在尝试将数据库中的数据加载到导航栏中。导航栏应该为管理员、签名用户和其他用户提供不同的链接。由于我还没有创建用于登录和注册的页面,因此我假设使用 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;
}