我有一个项目,其中网站上的不同页面将加载到一个包装器;当单击页面链接时,内容是将该页面加载到包装器中,而不是将用户带到新页面。该网站是用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()
与一个简单的控制器加载视图?