2012-05-03 75 views
2

我已經試過了解這個,並不確定從哪裏開始,所以希望有人能夠指引我朝着正確的方向前進。使用jQuery ajax請求外部網站數據

基本上我試圖用jQuery ajax來讀取外部網站並從中檢索鏈接列表。目前沒有特別的理由,只是想看看我是否可以通過這樣做來挑戰自己。

這樣做我已經讀了一些有關同源策略並理解它(有點),但可以做一些指針。

這可能嗎?例如,我一直在研究Kate Spanos使用的拼寫點計算器,她的jQuery代碼包含一些ajax,它似乎檢查字典網站並處理一些輸出。

有人能指出我的方向是正確的嗎,還是我在吠叫錯誤的樹,而且沒有其他技術知識基本上是不可能的。

感謝, 墊

PS我是一個「小白」,所以請儘可能輕柔。我們都必須從這個東西開始,所以請不要把我擊倒...提前致謝。

+1

這種類型的請求需要支持CORS的外部網絡服務器,或者需要某種類型的代理,以允許您避開YQL或服務器端腳本等同源策略。 –

回答

3

你應該看看JSONP,或者更可能使用某種中介,如使用捲曲或的file_get_contents訪問第三方網站

例如PHP腳本(所以同一產地):

<?php 
$file=file_get_contents('http://some_domain_not_yours.com/somefile'); 
echo $file; 
?> 
+0

而且是腳本很容易執行的PHP腳本?我根本沒有經驗的PHP,但我確定我可以快速地撿起它。 –

+0

它可以是非常簡單的取決於您的需求,我添加了一個示例腳本,但您可能需要發送參數以及您的AJAX請求,所以你應該看看'$ _POST','$ _GET'和'$ _REQUEST'你怎麼做 –

+0

哦,但是有些網站會檢查URL,所以禁止其他網站訪問它們,所以這不是一個完美的解決方案 –

0

你應該通過PHP通過PHP即裝載做到這一點包括外部網站,而不是解析它在你的PHP。

你不能通過jQuery做到這一點,基本上你不能讓客戶端檢索遠程內容,沒有服務器端來過濾它。如果客戶端可以訪問遠程內容,那麼您將無法控制SOP的數據訪問,您總是需要一臺服務器來保證內容管理和過濾,這可以是您的服​​務器或遠程服務器(如API提供商)。爲了保證這一點,您只能跨域共享JSON對象,JSON對象是通過PHP創建的對象(例如),所以如果沒有服務器腳本就無法獲得JSON對象。另一種方式(您的服務器介於兩者之間)是讓服務器獲取遠程內容,然後以任何您喜歡的格式將其提供給客戶端。