2012-02-04 92 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>