2012-12-04 31 views
1

我試圖在我的網站上顯示與facebook服務器同步的多變時鐘。 在FB服務器時,請訪問: https://api.facebook.com/method/fql.query?query=SELECT+now%28%29+FROM+link_stat+WHERE+url+%3D+%271.2%27&format=jsonFacebook的服務器時間在javascript

如何使它多變的每一秒而無需刷新頁面?

+0

服務器時間是'[{ 「匿名」:1354654854}]'? ? – Bergi

+0

是的,但它是unix時間戳格式;) – user1743942

+0

哦,它真的是自紀元以來的秒。本來會期待更多的描述性格式;希望這種格式不會改變非匿名用戶。 – Bergi

回答

0

我不會每秒都調用API。

取而代之,我會在開始時只獲得Facebook服務器的一次時間。然後,我會增加我的時間值每秒通過循環使用javascript:

setTimeout(function() { /* increment time */ }, 1000);

BERGI:[{"anon":1354654854}]unix time。事實上,Facebook經常(總是?)處理使用這種表示的時間。

+0

我試圖得到這樣的時間把它放在你的腳本'$ sql = $ facebook-> api_client-> fql_query(「SELECT now()」);'但它不適用於我。 – user1743942

1

假設一些非書面的功能,它應該看起來像:

var requestBegin = Date.now(); 
getServertimeFromFacebook(function callback(fbTime) { 
    var requestEnd = Date.now(); 
    var latency = (requestEnd - requestBegin)/2; 
    var curDevicetime = Date.now(); // = requestEnd, of course 
    var difference = fbTime - latency - curDeviceTime; 

    function clock() { 
     var cur = Date.now(); 
     var curFbTime = cur + difference; 
     show(curFbTime); // print, log, whatever 
    }; 
    setInterval(clock, …); // you could use a self-adjusting clock 
          // by using a setTimeout for each tick 
}); 

你可以做

show = function(t) { console.log(new Date(t).toString()); }; 
getServertimeFromFacebook = function(cb) { 
    ajax("https://api.facebook.com/method/fql.query?query=SELECT+now%28%29+FROM+link_stat+WHERE+url+%3D+%271.2%27&format=json", function(responsetext) { 
     var obj = JSON.parse(responsetext); 
     var ts = obj[0].anon, 
      tms = ts * 1000; 
     cb(tms); 
    }); 
}; 
+0

如何從頁面上的第二個腳本打印時鐘? – user1743942

+0

你是什麼意思的「在頁面上」?只需使用一個'show'函數,通過DOM操作顯示它。 – Bergi

+0

我試過'document.write(cb(tms))',怎麼用'show'? – user1743942