簡體   English   中英

如何使用.load()從其他域獲取內容?

[英]How do you get content from another domain with .load()?

使用.load()(或任何jQuery ajax函數)從我的域上的任何位置請求數據都可以正常工作。

嘗試訪問其他域中的URL不起作用。 你怎么做呢? 另一個域也恰好是我的。

我讀到了你可以用PHP做的一個技巧,並制作一個獲取內容的代理,然后你在服務器上的php位置使用jQuery的ajax函數,但是你仍然在自己的服務器上使用jQuery ajax,這樣就不算了。

有一個好的插件嗎?

編輯:我發現了一個非常好的jQuery插件,允許您使用任何jQuery函數從其他頁面請求內容,就像您在自己的域中的普通ajax請求一樣。

帖子: http//james.padolsey.com/javascript/cross-domain-requests-with-jquery/

插件: https//github.com/jamespadolsey/jQuery-Plugins/tree/master/cross-domain-ajax/

這是因為跨域策略,在排序中,意味着使用客戶端腳本(也稱為javascript ...),您無法從其他域請求數據。 幸運的是,大多數服務器端腳本都不存在此限制。

所以...

使用Javascript:

$("#google-html").load("google-html.php");

PHP中的“google-html.php”:

echo file_get_contents("http://www.google.com/");

會工作。

就瀏覽器而言,不同的域=不同的服務器。 使用JSONP來執行請求或使用PHP代理。 您可以使用jQuery.ajax()來執行跨域JSONP請求。

一個非常簡單的解決方法是使用Yahoo的YQL服務,該服務可以從任何外部站點檢索內容。

我已經在這個使用JavaScript和YQL的示例中的幾個站點上成功完成了這項工作。 http://icant.co.uk/articles/crossdomain-ajax-with-jquery/using-yql.html

此示例是博客文章的一部分,其中還概述了其他一些解決方案。 http://www.wait-till-i.com/2010/01/10/loading-external-content-with-ajax-using-jquery-and-yql/

我知道另一個有效的解決方案。 它不需要你改變JQuery。 它確實要求您可以在您的域中站起來ASP頁面。 我自己用過這個方法。

1)創建一個proxy.asp頁面,如本頁http://www.itbsllc.com/zip/proxyscripts.html

2)然后你可以做一個JQuery加載函數並將其提供給proxy.asp?url = .......在該鏈接上有一個如何格式化它的例子。 無論如何,您將外部頁面URL和所需的mime類型作為get變量提供給本地proxy.asp頁面。 我使用的兩種mime類型是text / html和image / jpg。

請注意,如果您的目標頁面包含具有相對源鏈接的圖像,則可能無法加載。 我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM