Javascript 显示服务器错误,而不是从数据库加载数据
我不知道我错过了什么。我正在尝试将数据从数据库加载到导航栏。导航栏应该为管理员、签名用户和其他用户提供不同的链接。由于我还没有创建用于登录和注册的页面,所以我假设使用AJAX调用的page showMenu.php中的代码将获取从functions.php加载的最后一个函数,该函数是针对未登录用户的查询。但是,代码不是从数据库中获取数据以用JS编写,而是属于AJAX调用的error属性,此外,还显示showMenu.php页面的server error 500。我检查了main.js和php页面的所有路径以及数据库中表和列的名称,所有内容都是正确的。为了记录,connection.php包含fetch模式,因此可以使用->访问表的列。我错过了什么 js代码Javascript 显示服务器错误,而不是从数据库加载数据,javascript,php,sql,ajax,http-status-code-500,Javascript,Php,Sql,Ajax,Http Status Code 500,我不知道我错过了什么。我正在尝试将数据从数据库加载到导航栏。导航栏应该为管理员、签名用户和其他用户提供不同的链接。由于我还没有创建用于登录和注册的页面,所以我假设使用AJAX调用的page showMenu.php中的代码将获取从functions.php加载的最后一个函数,该函数是针对未登录用户的查询。但是,代码不是从数据库中获取数据以用JS编写,而是属于AJAX调用的error属性,此外,还显示showMenu.php页面的server error 500。我检查了main.js和php页面
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;
}
如果您的状态为500,那么您的服务器日志应该包含错误的详细信息。还要注意,您的SQL中没有来自表的
,。您必须检查数据库文档,并可能运行解释,但我想不像6
将不是一个可索引查询,您可能需要使用!=6
。或者更好的方法是,添加一个类似于ACTIVE
的列,您可以进行切换,这样就不需要硬编码这样的异常。Alex Howansky,非常感谢!
<?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);
}
?>
function showMenuForNonSignedInUser(){
global $connection;
$query = "SELECT id, href, label WHERE id NOT LIKE 6;";
$data = $connection->query($query)->fetchAll();
return $data;
}