如何使用jquery或ajax获取外部html页面的内容
如何使用jquery或ajax获取外部html页面的内容
有个朋友今天问了我一个问题,整天都困扰着我。我已经搜索了许多论坛,寻找正确的方法来获取外部HTML内容并在我的页面上显示出来。
我想访问http://www.someExternalURL.com,并从这个页面中获取所有的HTML内容。
我尝试了以下方法:
$.ajax
({
url: "http://www.someExternalURL.com",
type: "GET",
cache: false,
crossDomain: true,
data: {},
jsonp: 'jsonCallback',
dataType: "jsonp",
success: function (data) {
alert('good');
jsonCallback = data.Result;
},
error: function (e) {
alert(e.responseText);
}
});
但是没有成功。
然后我尝试了:
var all;
$.get("http://localhost:60939/About.aspx", function (my_var) {
alert(my_var);
});
只是后者只适用于本地页面。并且我需要一个外部的页面。
非常感谢任何帮助。提前谢谢。
有多种方法可以实现这一目标,使用服务器端代码可以比JavaScript少用几行代码。使用PHP可以这样做:
或者使用Perl可以这样做:
#!/usr/bin/perl -w use strict; use warnings; use WWW::Mechanize; my $mech = WWW::Mechanize->new(); $mech->get("http://www.google.com"); my $content = $mech->res()->content(); print "Content-type: text/html\n\n"; print ""; print "Perl HTML Parsing "; print ""; print $content; print "";
关于C#或Python的方法我不太清楚,但是我相信通过快速搜索谷歌你可以找到你需要的结果。
如何使用jquery或ajax获取外部html页面内容
在浏览器中,如果某个网站不允许你向外部页面发出请求,那么你就无法获取这些页面的内容。请参考跨域资源共享(CORS)。
但是,你可以在服务器应用程序中实现这个功能。
问题的出现原因:无法直接使用jQuery或Ajax获取外部HTML页面的内容,原因是外部站点可能不允许跨域请求或返回格式不符合要求。
解决方法:使用JSONP或通过URL代理来获取外部HTML页面的内容。
具体步骤如下:
1. 使用JSONP:只有当外部站点允许时才能使用JSONP,需要对返回的JSON结果进行特殊处理。示例代码如下:
$.getJSON('http://www.EXTERNALSITE.com/json?callback=?', function(data) { // 处理返回的数据 });
2. 使用URL代理:在自己的网站上托管一个URL代理,使用cURL或其他方式下载所需内容。示例代码如下:
$.ajax({ url: 'http://YOURSITE.com/get.php?=http://www.EXTERNALSITE.com/json', success: function(data) { // 处理返回的数据 } });
以上是目前提供的两种解决方案。