从服务器redirect后页面需要刷新

新的问题,但真的很接近需要刷新页面在jQuery的移动 。

我有一个/login页面,第一次访问应用程序时,用户被redirect到(因此没有logging)。 顺便说一句,要login,用户只需提供一个用户名。 这个/login页面提供了一个带有单个文本input的表单,如下所示:

<form method="post"> <span>Votre pseudo:</span> <input id="username" name="username" data-bind="value: username, valueUpdate: 'afterkeydown'" /> <input type="submit" id="join" data-icon="star" value="Rejoindre !" data-bind="enable : canJoin"/> </form> 

在表单上没有action属性,因此(除非我遗漏了一些基本的东西,不要希望)表单提交后发送到/ login。

我用express来使用NodeJS,处理post请求服务器端看起来像这样:

 app.post("/login", function (req, res) { //do some stuff, store username for instance... res.redirect("/"); }); 

我的确被redirect到了/匹配页面(索引),但是这个索引页面中的embedded式脚本没有运行,并且一些jquerymobile对象没有完全运行:这个索引文件有2个JQM页面(两个div与data-role =“page “),第一个JQM页面(div)的页脚有两个链接,一个指向第二个页面(div)(通过锚点,JQM方式)。 但是这个链接也不活跃。

我必须重新加载/页面才能使embedded的脚本运行($(document).ready,脚本在标题中…)以及所有JQM对象正确响应。

提示:在重新加载页面之前,在firebug中,post / login请求的响应有一个302 statut(是由于redirect指令服务器端),并且下面的get / request(肯定是由于redirect指令服务器端)尽pipe它可以加载页面和它embedded的单个图像,但是仍然有一个空的响应。

我肯定错过了一些东西,但无法弄清楚…谢谢你的帮助

JQuery Mobile使用ajax将请求的页面加载到dom中。 您正在请求的页面应该只有一个jqm“页面”。

据我所知,我必须将所有的脚本添加到我的第一页,然后绑定到页面更改事件,以决定何时执行它们。 我不认为jqm会执行通过ajax加载的页面中的脚本。

看看这里的页面结构:

http://jquerymobile.com/demos/1.0.1/docs/pages/page-anatomy.html

导航工作的更多细节在这里:

http://jquerymobile.com/demos/1.0.1/docs/pages/page-navmodel.html

简单的解决scheme是在页面上的任何链接上使用data-ajax="false" ,这将告诉jquery mobile像任何普通站点一样加载整个页面。

例:

 <a data-ajax="false" href="page.html"> Some link </a>