我想知道如何加载托管在不同域上的HTML?
我正在使用JavaScript,并希望创建一个能够解析外部HTML的书签。
我一直在谷歌上搜索数小时......
答案 0 :(得分:5)
不允许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 library对此有好处。
// 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代码块中的success函数。
答案 1 :(得分:0)
如果您不拥有其他页面,那将非常困难。
实际上,您无法在javascript中向其他域发出请求。您唯一能做的就是从另一个域加载脚本:
<script type="text/javascript" src="http://otherdomain.com/script.js"></script>
如果这样做的目的是从其他域加载数据,并且(如我所说)您拥有另一个站点,则可以创建script.js文件,该文件将加载原始站点中所需的数据。
请记住,这是一个微妙的事情,只有当你知道剧本中会有什么时才应该这样做。
答案 2 :(得分:0)