从服务器重定向后,页面需要刷新

时间:2012-02-04 13:26:16

标签: jquery node.js express

新问题,但非常接近need to refresh page in jquery mobile

我有一个/登录页面,第一次访问该应用程序时,用户被重定向到该页面(因此未记录)。顺便说一句,要登录,用户只需提供用户名。此/登录页面提供带有单个文本输入的表单,如下所示:

<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属性,因此(除非我缺少一些基本原理,希望不是)表单提交post / to login。

我正在使用带有express的NodeJS,并且处理post请求服务器端看起来像这样:

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

我确实被重定向到/匹配页面(索引),但是这个索引页面中的嵌入式脚本没有运行,并且一些jquerymobile对象没有完全运行:这个索引文件有2个JQM页面(两个带数据角色的div) =“page”),第一个JQM页面(div)的页脚有2个链接,一个指向第二个页面(div)(通过锚点,JQM方式)。但是这个链接也没有活动。

我必须重新加载/页面才能运行嵌入式脚本($(document).ready,标题中的脚本...)并且所有JQM对象都能正确响应。

提示:在重新加载页面之前,在firebug中,post / login请求的响应有一个302 statut(是由于重定向指令服务器端),以及以下get / request(确定由于重定向指令服务器)虽然它可以加载页面和它嵌入的单个图像,但是有一个带有200个法规的EMPTY响应。

我肯定错过了一些但却无法弄明白... 谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

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

示例:

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

答案 1 :(得分:0)

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