0

我正在开发一个显示有关远程服务器的各种数据的仪表板。它使用侧边栏上的按钮在服务器之间切换。例如,这是调用脚本的 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",然后显示该服务器的数据。但是,它返回"Internal Server Error"。但是,如果我刷新页面,它会在会话设置为“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 中的会话有什么特别之处?

4

1 回答 1

0

您忘记了要求调用中的括号:

require_once 'config.php';

应该:

require_once('config.php');
于 2013-09-11T02:32:18.200 回答