簡體   English   中英

在ajax調用后訪問post變量

[英]access post variables after ajax call

在我的應用程序中,我有一個AJAX調用,該調用將在用戶重新加載頁面(以查看他們是否切換了時區)之前將用戶的時區發布到同一頁面。 不幸的是,我無法訪問該post變量。

$(window).on('beforeunload', function() {
    $.ajax({
        type: "POST",
        url: "ToDoApp.php",
        data: {
            timezone: userTimeZone
        },
        dataType: 'text'
    });
});

我很確定這是因為我在AJAX調用期間重新加載了一次,其次是在頁面實際加載時。 但是,我已經兜圈子了一個小時,似乎無法解決我的問題。

頁面重新加載后,如何獲取時區變量?

如果有更好的方法可以完全解決問題,我歡迎您提出建議。


更多信息:

我需要Server-Side上的timezone變量來執行時區轉換,因此需要進行AJAX調用。 從下面我的評論:

所以這是一個難題:我意識到時區是使用Moment.JS進行計算的更好的客戶端,但是我需要時區變量來進行服務器端時區轉換,以便向用戶正確顯示日期。 這就是為什么我[我認為]需要AJAX調用的原因,因為沒有它,一旦頁面重新加載,我的時區將只能在客戶端使用,而我將無法執行計算。

您可以使用javascript的sessionStorage ...執行以下操作。

//set this anywhere you want in your .js script;
sessionStorage.setItem('TheTimeZone',userTimeZone);

//get the timezone using sessionStorage
$(window).on('beforeunload', function() {
    $.ajax({
        type: "POST",
        url: "ToDoApp.php",
        data: {
            timezone: sessionStorage.getItem('TheTimeZone')
        },
        dataType: 'text'
    });
});

那應該工作。

你不能。 您必須編寫應用程序才能訪問回調中的userTimeZone值。 也許只是在請求結果中返回請求變量? 這樣,我建議使用JSON代替文本格式。 您可以從腳本ToDoApp.php返回

echo json_encode(array('post'=>$_POST, result=>$result));

並在回調中訪問它們,例如:data.post,data.result。

$(window).on('beforeunload', function() {
    if (typeof(Storage) !== "undefined") {
      localStorage.setItem("timeZone",new Date().getTimezoneOffset());
    } else {
      // Sorry! No Web Storage support..
    }
    $.ajax({
        type: "POST",
        url: "ToDoApp.php",
        data: {
            // new Date().getTimezoneOffset() gives clients timezone
            timezone: localStorage.getItem("timeZone")
        },
        dataType: 'text'
    });
});

更多信息: w3school在時區

暫無
暫無

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

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