2012-02-08 32 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