我正在处理单页应用并遇到某些问题。尽量做到尽可能简短。我们拥有的是:
TL; DR:如何在SPA中嵌入浏览器刷新,书签,复制+粘贴链接。
用户请求被发送到 index.php ,如果请求是通过GET发送的,该页面会回显一个简短的结构:
<div id="Header"></div>
<div id="Content"></div>
<div id="Footer"></div>
根据GET调用后的参数,例如&process=10
,javascript代码也会发送到客户端进行评估,这是一个带有某些参数的HTTP请求。在触发此HTTP请求(也是同一个index.php,这次通过POST)时,这个相同的index.php文件包含所需的.php类,并返回XML作为结果。
返回到客户端的XML结果的内容是一个HTML页面结构,可以“插入”特定的目标,比如说content
div。
因此,例如在用户输入webaddress后,服务器实际上会处理两个请求,并且处理完两个请求后的结果如下:
<div id="Header"></div>
<div id="Content">
<div id="Top"> Images </div>
<div id="Middle"> Hello World </div>
<div id="Bottom">
<button> Load more </button>
</div>
</div>
<div id="Footer"></div>
现在,假设用户按下此按钮,另一个AJAX请求被触发,请求让我们说进程20.例如,这将通过XML返回一个结构放在top
div内,所以新的HTML看起来像:
<div id="Header"></div>
<div id="Content">
<div id="Top">
<img src="somesrc">
<div id="imageGallery"></div>
</div>
<div id="Middle"> Hello World </div>
<div id="Bottom">
<button> Load more </button>
</div>
</div>
<div id="Footer"></div>
现在到目前为止一切正常并且非常棒!
以下是问题出现的地方。顶部的url
看起来有点像这样:
www.sitename.com/index.php?process=20
如果用户刷新页面,则会出现问题,因为GET请求被发送到index.php,索引返回一个简单的结构,然后触发“require” a的进程使用id="Top"
的div以便有一个自己嵌套的地方,但是这个div不存在,因为进程10应该事先被触发以“将它带到这里”。
如何正确解决这个问题?
我正在考虑使用某些预定义模式来嵌套div,但是应用程序的复杂性以及它能够“嵌套”甚至3-4级深度的要求。没有任何模式可以处理这种深度,或者我不知道。
我们做错了什么,这里必然存在一些概念上的错误,从某种意义上说,这不是假设要做的事情。