2010-07-31 31 views
1

我正在處理一個確定客戶端時區偏移的分配,並將其傳遞給一個PHP腳本,該腳本包含一個用於獲取該客戶區域的時區標識的代碼。對一個PHP頁面問題使用AJAX調用

現在爲了確定時區偏移量,我使用了JavaScript。不過,我需要一些方法將它傳遞給PHP。我用同樣的AJAX調用。

var url = "index.php"; 
url=url+"?client_timezoneoffset="+offset; 
xmlhttp.open("GET",url,true); 
xmlhttp.send(true); 

這個JavaScript我叫onload index.php。但是$ _GET仍然是空的。 我扭曲這個實現,並調用另一頁set_client_timezone.php 在哪裏讓我驚訝,$ _GET包含時區。然後我將它存儲在$ _SESSION中。

當我做了一個應用程序的全面測試,令我驚訝的是,時區變化反映在頁面的第二次加載。

即我第一次導航到http://www.example.com/index.php時,它顯示了UTC的時間,但是當我重新加載時,它顯示了我的時區 - 亞洲/加爾各答的正確時間。

你們中的任何一個人都可以提出我擺脫這種悖論的方法嗎?

任何人都可以點我達到同樣的標準方式(我已經準備好回滾我當前的實現)

我張貼在這個論壇的第一次,因此衷心的道歉,如果我的帖子藐視任何這個論壇的規則。

乾杯,
Abhijit。

回答

0

如果您通過ajax更改時區,那麼在首次調用時加載index.php的php serverside東西已經完成。 然後,在index.php完成後,客戶端/ JavaScript代碼啓動Ajax請求並將時區設置到會話中,因此對於下一次重新加載,服務器端PHP的東西知道正確的時區。

要修復它,你可以試試它。在PHP中設置時區並將其傳遞給您的JavaScript代碼。

+0

感謝您的快速回復。我使用JavaScript來確定客戶端時區偏移量,具體取決於我需要爲我的PHP腳本設置默認時區... – Abhijit 2010-07-31 09:58:50

+0

您如何確定時區?是不是也可以通過PHP?除此之外,我能想到的唯一解決方案是,通過ajax加載所有內容(或者所有與時區相關的內容)。所以你可以確定你已經知道用什麼時區來顯示相應的數據集。 – enricog 2010-07-31 10:49:22

+0

請參閱http://www.example.com/index.php的頁面加載我調用上面的JavaScript,它以秒爲單位返回偏移量。 我使用GET將其傳遞給set_client_timezone.php頁面。在這個頁面中,我將它設置爲$ _SESSION。 – Abhijit 2010-07-31 11:59:47

0

我同意上面的建議。 加載主要內容(index.php)以解決此問題後,您可以參與js功能。

setTimeout("yourfunction()",1000);// load function after 1 seconds from the actual loading time 

這可能會幫助你。

+0

再次感謝...但它不工作...... :( – Abhijit 2010-07-31 10:14:08