设置javascript变量时包含PHP文件

时间:2011-07-30 21:35:50

标签: php javascript ajax

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

我已经完成了一些不完全削减它的选项。我考虑过只包含所有文件并将它们放在没有显示的div中,这样当选择页面时,JavaScript会将div显示更新为可见。这样做的问题在于它会强制解析所有页面,这只意味着多余的数据库查询以及导致页面加载速度变慢的时间。

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

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

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

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

3 个答案:

答案 0 :(得分:2)

不要使用$ _SESSION;运行ajax请求时只需使用GET或POST参数。即而不是获取/something.php而不是/something.php?page=xyz。然后使用PHP中的参数来确定需要什么

如果确实需要会话变量集供以后使用,则可以在处理ajax请求时执行此操作。即扭转你现在正在做的事情的顺序

答案 1 :(得分:1)

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

在这种情况下,不要将状态处理的责任放在服务器上。

答案 2 :(得分:1)

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