2011-08-22 78 views
2

我現在正在設置一個使用大量Ajax交互的站點。現在發生的基本流程是數據在客戶端和服務器端都得到驗證,如果數據正確,則來自AJAX的響應將成爲下一頁的URL。客戶端重定向問題

當我收到url客戶端時,我正在使用window.location = url來執行我的重定向。

由於某種原因,這件事似乎是不正確的。具體來說,通過各種開源項目,我很少看到它。我想知道我上面描述的交互是否正確,如果不是,我可以採取什麼不同的方式來糾正我目前的設計。

+0

這種方法沒有什麼不對, –

回答

1

你在做什麼是完全正常的,是人們採取的正常方法。事情要記住的是你怎麼處理是你的帖子在Ajax請求由於某種原因失敗或有失敗失敗的請求等

有一個有趣的問題,所以,讀了顯着的答案:How to manage a redirect request after a jQuery Ajax call

希望對此有所幫助

1

這打破了AJAX的整個觀點:避免爲每次交互加載整個頁面,從而限制帶寬使用並提高響應速度。

在您的設計中,每次交互都需要兩個請求:一個用於驗證數據,第二個用於加載下一個完整頁面。你最好完全避免AJAX:它肯定會更有效率。如果驗證失敗,爲什麼不返回錯誤響應,以及如果驗證成功,必須在帖子後顯示什麼成功響應?

+0

並非我所有的頁面都是通過重定向加載的,有時我手動返回html並將其注入DOM(這就是你所說的我應該做的)。我猜是什麼問題,我正在使用更多的Ajax比我應該是,而我應該使用傳統的HTTP帖子,以避免開銷。 – josephmisiti

1

重定向的最佳方式是從服務器端,基本上是因爲服務器是誰知道你是否可以訪問此頁面或不是,並在標題中響應302重定向或只是返回它自己的頁面,然後如果服務器批准您對頁面的請求,AJAX應該處理頁面中的交互,而不必關心安全性。

如果無論如何你不關心安全性,那麼window.location是好的。

+0

爲什麼window.location是安全違規? – josephmisiti

+0

不是。我的意思是你應該控制從服務器訪問你的數據(就像你這樣做)並重定向表單,而不是驗證AJAX對內容的訪問。安全問題是您的用戶可以輕鬆地禁用JS,因此在用戶仍然可以查看頁面時不會被重定向。 – Michael