2016-07-16 73 views
0

我存儲用戶對cookie中的問題(多選)的響應。只有在用戶嘗試了20個問題後,服務器才從cookie中提取數據。 問題是當用戶試圖只說,10個問題和離開網站。 cookie中的響應不可用於服務器。 該要求不允許我從每個頁面加載中提取cookie數據。 我正在考慮觸發一個頁面加載,在cookie到期之前,以便這些額外的數據可以與服務器同步。但無法找到任何解決方案。發送cookie數據到服務器沒有頁面加載

欣賞在這個問題上的指針

例如:有500頁,全是選擇題。 當用戶嘗試第一個問題時,答案被記錄在cookie中。 第二頁/第二個問題/下一頁加載。服務器看着cookie ......不做任何事情,因爲它只有一條記錄。 接下來的問題......用戶響應再次保存在cookie中。服務器在找到20條記錄(20條記錄的標誌由一個標誌刷新給出,如果是,服務器提取所有20條記錄/問題的cookie數據並更新數據庫,則它不執行任何操作),它將清除cookie並再次等待20條記錄之前提取。 現在如果用戶解決了下一個被記錄在cookie,並離開場地10個問題,這些額外的10個問題都將丟失,因爲服務器上沒有提取他們,直到最後一頁的負荷。

感謝, 的Pankaj

+0

如果您問「當用戶離開頁面時如何觸發某個功能(例如,AJAX請求)?」你應該研究'beforeunload' [event](https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload)。如果你問別的東西,我不清楚它是什麼。 –

+0

我不知道用戶何時決定離開網站,所以觸發應該發生在cookie過期之前。或者有什麼方法可以在用戶離開網站後將cookie數據發送到服務器。 – user34484

+0

聽起來你正在使用會話cookie,但要記住,用戶可以離開你的網站而不會真正結束會話;一個會話通常在* browser *關閉時結束。 –

回答

0

如果您問「如何在會話cookie過期時觸發事件?」我認爲您不可以,除非瀏覽器公開一個特殊的API來執行此操作。Cookie將在瀏覽器關閉時過期,或在特定的da te/time--但是當它的特定窗口關閉時,腳本將停止運行。

如果你不想改變你的服務器邏輯,或者給用戶一個明確的「保存」按鈕,我的建議是:

  1. 添加beforeunloadevent處理程序發送一個請求到服務器與「刷新」標誌,表明用戶正在離開頁面,服務器應該存儲所有剩餘的數據。

  2. 如果用戶即將前往另一問題頁面,則禁用該事件處理程序。

你如何實現2.取決於你的應用程序當前如何觸發問題頁面之間的轉換。

+0

謝謝維多爾!你的方法是非常有幫助的。 – user34484

+0

@ user34484很高興爲您提供幫助。 –

+0

謝謝維多爾!你的方法是非常有用的。點2我可以解決,因爲服務器會知道下一個請求的URL,如果它的問題URL然後忽略閃光標誌或榮譽沖洗標誌。我看到的唯一challange是當用戶關閉標籤/瀏覽器本身。 – user34484