2012-02-08 31 views
3

我正在考慮通過單擊鏈接來實現用Ajax請求獲取數據。我知道如何使用$ .ajax和其他xhr請求方法。我想知道關於以下案件的一些信息。我去了http://www.facebook.com/?sk=welcome ,然後我點擊「查找朋友」,我注意到網址更改爲http://www.facebook.com/?sk=ff,右側的數據被刷新(無回傳),我的朋友被加載。我注意到的奇怪的事情是沒有記錄XHR請求(我正在用FireBug控制檯查看),這是我期望的。 FB如何做到這一點與任何XHR請求? FB是否使用iframe,如果沒有,那麼它如何刷新頁面的一部分與新鮮數據沒有回發沒有一些XHR請求(在這種情況下)帶鏈接點擊時沒有回傳數據

客戶端如何在沒有回傳的情況下調用服務器的數據,沒有iframe,也沒有某個Ajax調用?

回答

0

Facebook上採用了隱形的iFrame。

這裏是其中的一個內容:

<html> 
<head> 
<title></title> 
</head> 
<body> 
<span id="fbEmuTrackingSuccess">Success</span> 
</body> 
</html> 

源是一個充滿則params的URL。所以我猜想它會通過更改iframe URL來發送所有Ajax請求,並根據iFrame正文的內容在加載iFrame時執行回調。

0

我不知道Facebook如何做,但可以通過動態加載腳本元素來完成。例如:

function getFriend(id) { 
    var newScript = document.createElement("script"); 
    newScript.src = "http://example.com/get_friend.php?id=" + id; 
    document.body.appendChild(newScript); 
} 

而且get_friend.php回報:

document.getElementById("friend_box").innerHTML = "Your friend's details"; 
+0

我如何得到「你的朋友的詳細信息」;在上面的例子中? – 2012-02-08 18:02:59