设置javascript变量时包含一个PHP文件


Include a PHP file when javascript variable is set

我有一个项目,其中网站上的不同页面将加载到一个包装器;当单击页面链接时,内容是将该页面加载到包装器中,而不是将用户带到新页面。该网站是用PHP和MySQL构建的,页面不应该重新加载。显然,它应该是一个平滑的动作。

我已经浏览了一些不太合适的选项。我考虑过只包括所有文件并将它们放在div中而不显示,这样当页面被选中时,JavaScript会将div显示更新为可见。这样做的问题是,它强制解析所有的页面,这只意味着多余的数据库查询和导致更慢的页面加载时间。

我尝试过的另一件事是在单击页面链接时启动AJAX调用。JavaScript会将页面名称传递给PHP脚本,PHP脚本会设置一个会话变量$_SESSION['page_name'],等于传递的页面名称。使用它,我可以这样做:

                            //assume $page is equivalent to $_SESSION['page_name']
            if(isset($page) && file_exists("pages/$page")
            {
                require_once "pages/$page";
            }

但是这需要刷新页面才能工作。我正试图在不重新加载页面的情况下完成这一切。

所以现在我有点卡住了。有什么建议吗?

不要使用$_SESSION;只要在运行ajax请求时使用GET或POST参数即可。也就是说,不是得到/something.php而是得到/something.php?page=xyz。然后在PHP中使用参数来确定需要什么

如果确实需要设置会话变量以供以后使用,可以在处理ajax请求时这样做。也就是说,把你正在做的事情的顺序倒过来

您的控制点是客户端。如果/当成功触发ajax响应时,让JavaScript设置cookie。当JS完成AJAX调用时,设置cookie。在单击事件中,检查需要的cookie,并根据cookie是否存在进行适当的AJAX调用(或不调用)。

在这种情况下,不要把状态处理的责任交给服务器。

JQuery.load()与一个简单的控制器加载视图?