假设服务器上有一个网页 www.example.com/some.html 。现在我想从另一个域获取该页面的body标签内的内容。我该怎么做?我试图找到解决方案,但还没有运气。
以下是我思考和发现的一些方法。 第一个可以从同一站点获取标签的内容。
$.get("link.html", function(data) {
var html = $('<div>').html(data);
var content = html.find("div#some_div_id").html();
//do something
$("#Container").html(content);
});
use .get() to get html of a div in another page
我试过了,但对我不起作用。我认为这是因为我的跨域请求。
第二个想法是使用iframe。想要将页面加载到iframe并提取body标签。但是找不到任何关于如何检测iframe完成加载页面的事件的解决方案?或者我如何从iframe加载页面获取内容?
任何人都可以告诉我如何以简单的方式从body标签中获取这些内容?有没有像我的第一个例子那样的解决方案?请帮忙......
答案 0 :(得分:3)
这很有效。
var bodycontent;
$("<div>").load("link.html body", function (data) {
bodycontent = data;
});
如果我是你,我会用服务器端的东西来做。这是因为许多网站使用Access-Control-Allow-Origin
来阻止文件,并使您无法访问它们。这也是模仿和黑客行为的一种形式,因此请适度使用。
答案 1 :(得分:1)
如果没有服务器端代理来请求其他网站的内容,这是不可能的;由于原始策略相同,Javascript无法发出跨域请求。您不能仅使用iframe或AJAX服务器端代理执行此操作。
答案 2 :(得分:0)
试试这个
$.ajax({
url: "your_url",
data: dataToSubmit,
async: false,
success: function(response) {
$('.your_div').html(response);
}
});
你也可以使用加载
$('body').load("your_url");
答案 3 :(得分:0)
$.get("URL", function(data) {
data = data.replace(/\n|\r|\t/gmi,'');
/<body>(.*)<\/body>/i.test(data);
data = RegExp.$1;
});
如果你想要解析HTML,使用正则表达式会更好