单页应用,div嵌套和页面刷新问题

时间:2017-10-09 08:55:29

标签: javascript php html

我正在处理单页应用并遇到某些问题。尽量做到尽可能简短。我们拥有的是:

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级深度的要求。没有任何模式可以处理这种深度,或者我不知道。

我们做错了什么,这里必然存在一些概念上的错误,从某种意义上说,这不是假设要做的事情。

0 个答案:

没有答案