Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js:从不同域加载页面的html_Javascript_Cross Domain_Bookmarklet - Fatal编程技术网

Javascript js:从不同域加载页面的html

Javascript js:从不同域加载页面的html,javascript,cross-domain,bookmarklet,Javascript,Cross Domain,Bookmarklet,我想知道如何加载托管在不同域上的HTML 我正在使用JavaScript,希望创建一个bookmarklet,使我能够解析外部HTML 我已经在谷歌上搜索了几个小时,但都是徒劳的…JavaScript不允许跨域请求。这是一个很大的安全风险。相反,您必须在服务器上执行一个脚本,并让它将结果返回给JavaScript函数 例如,假设您使用的是JavaScript和PHP,您可以将应用程序设置为如下所示: JavaScript向服务器上的页面(或脚本)发起Ajax请求。它将所有必需的参数传递到此页面。

我想知道如何加载托管在不同域上的HTML

我正在使用JavaScript,希望创建一个bookmarklet,使我能够解析外部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在这方面很好

// 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函数。

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在这方面很好

// 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函数。

如果您不拥有另一个页面,那么这将非常困难

事实上,您不能在javascript中向另一个域发出请求。您只能从另一个域加载脚本:

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

如果这样做的目的是从其他域加载数据,并且(如我所说)您拥有其他站点,那么您可以创建script.js文件,该文件将加载您在原始站点中需要的数据


请记住,这是一件微妙的事情,只有在您知道脚本中会有什么内容时才应该这样做。

如果您不拥有另一个页面,这将非常困难

事实上,您不能在javascript中向另一个域发出请求。您只能从另一个域加载脚本:

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

如果这样做的目的是从其他域加载数据,并且(如我所说)您拥有其他站点,那么您可以创建script.js文件,该文件将加载您在原始站点中需要的数据


请记住,这是一件微妙的事情,只有在您知道脚本中会有什么内容时才应该这样做。

您可以从
localhost
发出跨域请求,但如果您计划将此代码部署到服务器上,它将不起作用。既然您正在开发一个bookmarklet,我想您可以做到这一点

您需要使用来获取远程HTML

库使此任务变得如此简单

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

您可以从
localhost
发出跨域请求,但如果您计划将此代码部署到服务器上,它将不起作用。既然您正在开发一个bookmarklet,我想您可以做到这一点

您需要使用来获取远程HTML

库使此任务变得如此简单

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

请注意,当无法从服务器访问该页面时,这是一种痛苦。我恐怕没有启用curl的服务器。请注意,当无法从服务器访问该页面时,这是一种痛苦。我恐怕没有启用curl的服务器。谢谢,但它只在访问google时运行bookmarklet时起作用。com谢谢,但它只在我运行bookmarklet时起作用在访问google.com时使用bookmarklet