簡體   English   中英

js:從其他域加載頁面的html

[英]js: Load html of a page from a different domain

我想知道如何加載托管在不同域中的HTML?

我正在使用JavaScript,並且想創建一個書簽,使我能夠解析外部HTML。

我白白搜尋了好幾個小時...

不允許JavaScript發出跨域請求。 這是一個很大的安全風險。 相反,您將必須在服務器上執行腳本並將其返回給JavaScript函數。

例如,假設您使用的是JavaScript和PHP,則可以將應用程序設置為如下所示:

JavaScript向服務器上的頁面(或腳本)發起Ajax請求。 它將任何必需的參數傳遞到此頁面。 以下代碼基於jQuery(為簡潔起見),但是無論您使用什么框架,其原理都是相同的。

var sParameters = " ... " // this is defined by you
$.ajax({
  url: 'your-server-side-code.php',
  processData: false,
  data: sParameters,
  success: function(sResponse) {
    // handle the response data however you want
  }
});

服務器端代碼將響應該請求,並將必要的參數傳遞到跨域網站。 PHP的cURL庫對此非常有用

// very contrivuted cURL configuration for purposes of example...
$curl_connection = curl_init();
$str_url = "http://you-url.com";
curl_setopt($curl_connection, CURLOPT_URL, $str_url);
curl_setopt($curl_connection, CURLOPT_GET, 1);
// ... keep setting your options ...
$str_response = curl_exec($curl_connection);
curl_close($curl_connection);

當跨域網站響應時,您的服務器端代碼可以將響應回顯到初始請求。 這可能應該在回復之前進行驗證,但這只是一個例子。

print_r($str_response);

然后,JavaScript響應處理程序函數可以解析傳入的響應數據。 注意上面JavaScript代碼的第一部分中的成功函數。

如果您不擁有其他頁面,那將非常困難。

實際上,您無法使用javascript向另一個域發出請求。 您唯一可以做的就是從另一個域加載腳本:

<script type="text/javascript" src="http://otherdomain.com/script.js"></script>

如果這樣做的目的是從另一個域加載數據,並且(如我所說)您擁有另一個站點,則可以創建script.js文件,該文件將在原始站點中加載所需的數據。

請記住,這是一件微妙的事情,只有在您知道腳本中將要包含的內容時,才應該這樣做。

您可以從localhost發出跨域請求,但是如果您打算將此代碼部署到服務器,它將無法正常工作。 由於您正在開發一個書簽,我想您可以做到這一點。

您需要使用AJAX來獲取遠程HTML。

jQuery庫使此任務變得如此簡單...

$.get("http://www.google.com", function(html) { alert(html); });

暫無
暫無

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

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