2012-02-04 93 views
1

新问题,但真的接近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属性,因此(除非我失去了一些基本面,希望不要)的形式提交后登录。

我使用的是快递的NodeJS和处理Post请求服务器端是这样的:

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

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

为了让嵌入脚本运行($(document).ready,scripts in header ...)和所有JQM对象正确响应,我必须重新加载/页面。

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

我肯定失去了一些东西,但想不通...... 感谢所有帮助

回答

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

+0

感谢,正是我的问题,办法找到我的解决方案!在jqm完全noob我做它错了(老式的方式,但没有禁用ajax默认) – wiill 2012-02-04 15:41:26

+0

@wiill没问题!自从第一次发布以来,我一直在与JQM一起开发。我们只是说我已经完成了我完成错误的工作,尤其是当API正在发生变化并且所有文档都已过期时。请将我的答案标记为已接受。 ;) – Jonathan 2012-02-04 18:50:25

1

简单的办法就是任何链路上使用data-ajax="false"在您的页面上,这会告诉jquery mobile像任何普通网站一样加载整个页面。

例子:

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