簡體   English   中英

JavaScript-檢測是否發生了POST請求

[英]JavaScript - detecting if a POST request has occurred

我有一個小問題:我需要檢測我的網站的用戶是否在設定的時間范圍內未執行任何Ajax POST請求,並提示他進行一些處理。 我已經有如下代碼:

var idleCounter = 600
var loginTimeoutCounter = setInterval(function() {
    console.log(idleCounter)

    // If a POST request is detected, reset idleCounter to max value.

    if (idleCounter > 0) {
        idleCounter -= 1
    } else {
        var promptAboutLogout = confirm('You have been idle for more than 6 hours.\n\n' + 
       'Your login session could have expired by now.\n\n' + 
       'Please be sure to refresh this web page before attempting to upload new content.\n\n' +
       'Press OK to reload this page, or Cancel to stay on it as-is.')
    if (promptAboutLogout) {
        clearInterval(loginTimeoutCounter)
        location.reload()  // Reload the web page to refresh the login credentials.
    } else {
        idleCounter = 600   // Re-set the counter for 10 min to give user another prompt.
    }
  }
}, 1000)

我只是不知道如何整齊地添加代碼以進行POST請求檢測。 我不想在表單提交eventListener幾百行之前就把idleCounter值修改粘合在一起,因為它會很雜亂,並且很難回到代碼在任何可預見的將來經過下一個修訂的時間。

是否有任何精巧的JS函數可以處理任何POST請求?

如果要在會話即將到期之前而不是在會話到期之后提示用戶,則使用的方法更有意義。 但是,如果您想繼續使用這種方法,則應該在您觸發所有ajax請求的地方使用一個通用的controller / util(將其包裝為用於ajax請求的lib的包裝器)。 因此,每當您要調用ajax請求時,就將詳細信息傳遞給控制器​​,該控制器又將發出實際的ajax請求。 然后它將接收來自服務器的響應,並將其傳遞給被調用者以進行進一步處理。 在這里,您可以處理每個發布請求的計時器變量。

現在,如果您使用的是通用控制器,則可以一起擺脫此計時器問題。 當會話到期時,您的服務器將重定向到登錄頁面,大多數狀態代碼為302。您的瀏覽器將處理此重定向請求,並使用登錄頁面的html服務您的ajax回調。 此時,您可以提示您的消息對話框或事件,以更好地顯示登錄屏幕,以便用戶可以從那里重新進行身份驗證並繼續其工作。 這應該是一些代碼更改,但將來肯定會簡化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM