2012-07-31 140 views
0

我正在處理需要使用JQuery的「加載」命令將一個HTML文件導入另一個頁面的頁面。它應該非常簡單 - 它會提取網站標題(徽標圖像,搜索框,菜單欄)的內容。使用JQuery嵌入外部HTML文件

在我的測試頁面上有效,但在實時店面中它不起作用,我找不出原因。

下面是我的JS文件中的行 - 很簡單:

$("#x-head").load('http://www.sunandfuninoc.com/testingsites/jxinstalls/topparts/ebay/head.html'); 

的HTML DIV應我的主頁上填充這個樣子的:

這裏是一個的工作出色的測試頁: http://www.sunandfuninoc.com/testingsites/jxinstalls/topparts/ebay/store.html

下面是不是裝在所有的活動網站: http://stores.ebay.com/Top-Parts-Store

有什麼想法?謝謝!

+0

你是否在控制檯或Firebug或您在瀏覽器中使用的任何開發人員工具中遇到任何錯誤? – MrOBrian 2012-07-31 21:48:20

+3

「Access-Control-Allow-Origin不允許」Origin http://stores.ebay.com「。 – ahren 2012-07-31 21:50:49

+0

在JS,沒有錯誤的Firebug或Chrome顯示。 – user1567014 2012-07-31 21:53:49

回答

1

它在第一種情況下工作,因爲您所做的請求與其託管的網站位於同一個域中。在第二種情況下,store.ebay.com正在提出請求,並且由於現代瀏覽器中的安全功能,不允許跨域請求。

3

這是由於JavaScript運行的源策略相同。

除服務器明確允許的情況外,在使用AJAX時,您不得從單獨的遠程服務器(即運行的服務器以外的服務器)獲取內容。

http://en.wikipedia.org/wiki/Same_origin_policy

除非你調用服務器允許跨域調用,你唯一的選擇將是不通過jQuery,但通過服務器端代理,例如加載頁面PHP通過cURL。服務器端語言通常不受此限制。

+0

好的,這意味着它已被禁用,因爲它在eBay.com網站上?有沒有辦法解決? – user1567014 2012-07-31 21:56:25

+0

我的意思是還有另一種類型的腳本或其他功能可以做同樣的事情嗎? – user1567014 2012-07-31 21:57:08

+0

不 - 這是一項默認政策,並非針對eBay。看看我提供的鏈接:SOP。除非目標*明確*允許通過跨域AJAX進行調用,否則您將無法執行此操作。 Re:你的第二個評論,不是 - 正如我所說的那樣,這是一個管理所有客戶端編程的策略,而不是針對jQuery或你正在使用的功能的限制。 – Utkanos 2012-07-31 21:57:10

0

1.load();將工作,如果您使用的網址是在同一個域。

2.如果你想要一個像store.ebay.com使用代理服務器來加載外部內容,如果你使用PHP,你可以做一個PHP文件,該文件會從使用捲曲該網站的源。否則,你將無法達到你想要的原因Access-Controll-Allow-Origin規則(這意味着你可以加載不在你的域中的外部內容)。

+0

感謝您的建議,我肯定會考慮PHP選項。 – user1567014 2012-07-31 22:15:01

+0

只是要知道,這是使用代理的方式,請查看:http://jquery-howto.blogspot.com/2009/04/cross-domain-ajax-querying-with-jquery.html – 2012-07-31 22:16:35