2010-04-12 170 views
2

使用Javascript的網頁可能從其他網站獲取數據嗎?在我的情況下,我想獲得它用於計算和繪製圖表。但由於安全問題,我不確定這是否可行。如果它被認爲是一個不,但有一個工作,我會很高興被告知周圍的工作。如果可能的話,我不想在服務器端收集這些信息。可能使用Javascript從其他網站獲取數據?

任何和所有的幫助表示讚賞。

回答

2

瞭解JSONP格式和跨站請求(http://en.wikipedia.org/wiki/JSON#JSONP)。

您可能需要在服務器端使用「PHP代理」腳本,它將從網站獲取信息並將其提供給您的Javascript。

0

由於same origin policy.的原因,您無法從其他服務器獲取數據您可以使用一些技巧來解決此問題,例如將URL放在<script>標記中,但在您的情況下,它不適用於僅解析HTML 。

使用simple_dom_html來解析您的數據服務器端。無論如何,它比用JavaScript做起來要容易得多。

一個簡單的方法,你可以做到這一點是使用inline iframe。如果您從中獲取數據的網頁沒有標題,或者您可以隔離被拉入的數據(表示圖像或SWF),這可能會起作用。

+0

如果您無法使用Javascript從其他服務器獲取數據,DoubleClick如何保持業務? – Robusto 2010-04-12 23:29:00

+0

@Robusto,就像Google廣告一樣。他們託管一個JavaScript文件,將其拉入您的頁面。此JavaScript動態地將廣告寫入您網頁的div中。要麼你或你手動編寫iframe。遠程JavaScript源代碼+ Iframe!=從其他頁面提取數據。 – 2010-04-12 23:44:22

+0

這是不是從其他服務器拉數據? – Robusto 2010-04-12 23:46:00

1

唯一可靠的方法是讓「您的」網絡服務器充當代理。在PHP中,您可以使用curl()將HTTP請求發送到外部站點,然後僅回顯響應。

0

跨域JavaScript以前是不可能的,使用(php-)代理是一種解決方法。它允許從另一個服務器請求javascript(如果它有一個支持jsonp的API,許多像web,google,twitter,yahoo等那樣的更大的webplayers),指定回調函數,函數在您的代碼中需要被觸發以響應響應。

在JavaScript中響應將包含:

  • 打電話給你定義
  • 實際的有效負載爲一個JavaScript對象的回調函數。

框架如jquery offer easy support for jsonp out of the box

一旦你有了原始數據,你就可以綁定到google chart tools來動態創建圖形並將它們插入到你的webapp中。

0

另外值得考慮的是支持XMLHttpRequest Access Control這是在一些現代瀏覽器支持。

如果您試圖通過網頁訪問的服務提供商已經設置好了,那麼這是一個非常簡單的XMLHttpRequest調用,您將可以訪問該網站上的資源,而無需使用JSONP(特別有用對於不是GET的請求,例如POST,HEAD等)