2012-07-17 61 views
1

如果你谷歌的「jQuery手機籃子」,你會發現只有噸關於「jQuery手機」的書籍和按鈕:「添加到購物籃」...jQuery手機和籃子處理:有一個很好的howto outthere?

這是我做到了這一點,它只是顯示我這不是好辦法(=糟糕的用戶交互):

MP =手機

  1. MP:創建本地籃(JavaScript類)
  2. MP:下載整個頁面的所有產品,但隱藏(=不同的頁面)。
  3. MP:在選擇產品時,只能更改頁面
  4. MP:每次加入產品,製造和AJAX調用,這樣所有事情都保持在服務器端
  5. MP:每次消除一個產品,製造和AJAX呼叫,以便一切都保留在服務器端
  6. 服務器端:保持所有在一個會話,直到它到期,或MP寄存器上的用戶。如果是這樣,請在數據庫中添加所有信息的新記錄。

最大的問題是添加或刪除時。有時,僅僅做一個Ajax調用就會很慢,這是不可接受的:你經常添加很多產品,所以你可能不得不等待每個調用。根本不是用戶友好的。

我的(未來)網站以這種方式完美工作,我不知道移動版本會有這樣的問題。

什麼可能是「移動版本」的解決方案呢?

回答

0

可能的實現可能有一個basket結構作爲Javascript中的全局變量,並將其與服務器端結構同步。

MP上的頁面上的JS代碼應該只添加/從本地basket結構中刪除。

然後可能會有一個定時器使用定期的Ajax調用將本地basket同步到服務器basket

這樣你就不會使(慢!!!)Ajax調用每個添加/刪除,但批量增量到你的服務器。

0

您可以在全局變量中存儲籃子中的任何東西。因爲當使用正常的jQuery-mobile轉換時(只加載了data-role="page"),變量不會在頁面之間被刪除,因此可以使用此變量來存儲項目。我認爲一個JSON對象最容易用來存儲「上籠」項目的所有屬性。

您將不得不確保您的變量不會被某個rel="external"轉換刪除。也許您的網站上的備份可以爲這些情況提供一些保護。

+1

如果用戶刷新頁面?或關閉瀏覽器,然後幾分鐘後回來?我所做的解決方案適用於這兩種情況。 – 2012-07-17 08:02:02

+0

這就是爲什麼你可以將籃子備份到你的網站。打開頁面時,您可以啓動一個AJAX請求來檢查籃子內容是否正確。這樣你仍然保持速度,因爲它是一個異步請求,通常這個籃子被全局變量填充。但是當籃子內容丟失時,您可以從服務器恢復。 – Calavoow 2012-07-17 08:32:15

+0

我會考慮這個。也許如果籃子被修改了,我會啓動一個計時器,如果在一段時間之後沒有修改(=不添加/刪除),我將它發送到服務器。 – 2012-07-17 08:38:31

相關問題