我正在尝试在弹出窗口/模态中加载新内容(登录/线程创建/线程视图/快速搜索),但也使用pushState更改URI。
现在,我有一般的概念,但我对确切的机制略有困惑。
我在浏览网站时遇到了www.usatoday.com/news。我做了一些研究,看起来他们使用pushState来改变URI并通过AJAX在模态窗口中加载内容。
我的问题具体涉及如何在模态窗口中拉动和显示“新页面”。很明显,您需要有一个新的控制器来显示正确的URI并使其可共享/可爬行。但是可以将该页面直接显示在模态中吗?或者你必须在一个全新的ajax驱动的模型/视图中干净信息吗?
答案 0 :(得分:1)
还有一个后关闭回调,您可以在其中弹出或推送新状态以将uri恢复为原始状态。
你如何处理从外部进入uri的人取决于你。但是你已经将页面构建为一个独立的链接,那么它应该不是问题。如果你想在fancybox中打开它,你必须在doc上为该页面准备好fancybox。
你也说过很明显你必须有一个新的控制器。这根本不是真的,事实上我根本就没有单独的控制器,如果我是你,我会在constants.php中定义一个常量:
define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
然后您可以像以下一样进行检查:
if (!IS_AJAX){
//here is code for non ajax page load, e.g load headers, footers etc that you dont need in ajax requests etc.
}else{
//often dont need this but if you have code specifically for ajax call put it here
}
}