我正在制作一个显示有关远程服务器的各种数据的仪表板。它通过侧栏上的按钮在服务器之间切换。例如,这是调用脚本的html:
onclick="tab('localhost')"
这是Ajax位:
function tab(host){
$.ajax({
url: 'remote.php',
data: { tab: host },
success: function(result){
$('.container-body').html(result);
},
error: function(xhr, status, error) {
$('.container-body').html("<h1>" + error + "</h1>when opening " + host);
},
complete: function(){
$(init_ui);
$(update);
$('.tab').removeClass('active');
$('#dash').removeClass('active');
$('#'+host).addClass('active');
}
});
}
这应该将$ _SESSION [“tab”]设置为“localhost”,然后显示该服务器的数据。但是,它会返回“内部服务器错误”。但是,如果我刷新页面,它会正常加载会话设置为“localhost”。
如果我从Ajax调用中删除了GET参数,并从remote.php中删除了isset()函数,那么Ajax函数会在没有会话的情况下返回成功,并暗示这是问题所在的位置。
这是remote.php的php配置
<?php
error_reporting(E_ALL ^ E_NOTICE);
session_start();
require_once 'config.php';
if(isset($_GET["tab"])) $_SESSION["tab"] = $_GET["tab"];
?>
没什么特别的,对吗?那到底是怎么回事?!
由于某些原因,Ajax正在错误地处理会话,并且错误的会话导致无效的PHP代码。
Ajax中的会话有什么特别之处?
答案 0 :(得分:0)
您忘记了要求中的括号:
require_once 'config.php';
应该是:
require_once('config.php');