2011-07-13 33 views
1

我不得不爲這個項目與Facebook API交互,我發現它實際上比我預期的要慢。正因爲如此,我不得不做一些我覺得非正統的事情:我需要加載Facebook提供的來自Facebook的PHP腳本AS IT LOADS的內容。傳統上,我在腳本成功時將內容加載到了div標籤中;不過,我需要加載顯示的內容。讓客戶在顯示任何內容之前等待近一分鐘,Facebook才能加載相冊和所有相關評論,這絕對是不可接受的。希望我不會模糊;我不是在這裏尋求代碼,但我已經嘗試了所有我能想到的事情。這是一個簡單的概念,我錯過了?...我覺得這比我做的更容易。jQuery AJAX獲取PHP腳本,顯示加載內容時的內容

我正在使用jQuery AJAX,因爲我覺得這是最容易使用的。任何意見和/或幫助將不勝感激。

回答

2

的你的問題的根源在於jQuery的AJAX方法鉤入onreadystatechange事件和readyState變量。 readyState僅在文件完全傳輸時設置爲4,因此您的事件只會在下載完成後觸發。

在發送數據時訪問數據是而不是跨不同瀏覽器系列一致。這樣做會非常複雜和耗時。我建議首先做一點不同的事情,也許可以通過預先在自己的服務器上預加載相關的Facebook數據。這可以編譯爲一個靜態頁面,並可以反過來快速向用戶提供。

爲了更快地將數據提供給用戶,您還需要在箱子外面工作。這裏討論了一個jQuery插件(Does PHP flush work with jQuerys ajax?),它使jQuery ajax方法與流式輸出兼容。祝你好運。

+0

我看了一下上面提到的插件,可悲的是,自2008年以來,大多數現代瀏覽器都不允許插件網站過早訪問responseText的權限。所以我想這個夾具已經起來了!我必須弄清楚另一種做事的方法。我通常會盡量避免它們,但是您會怎麼看待在這裏使用iframe? – cereallarceny

0

這個問題似乎源於您一次獲得太多數據的事實。我想你正在討論從ajax接收內容的問題,因爲它會立即打印出來,但是可能會立即構建和發送這些內容,並且在整個解析完成之前,您將無法訪問數據。如果這是不真實的,請查看COMET。如果確實如此,解決方案是限制您一次檢索多少數據,以減少解析時間。例如,在每個請求中檢索5張照片。這5張照片添加到DOM,而你檢索下一個5

0

而不是把你想要的回調內部的任何代碼的,只是把它回調後

例如

$("#div").load("facebook...", function() { 
    //do stuff 
}); 
//put the stuff you want to load at the same time, here