通过id跨域请求

时间:2011-09-15 05:35:24

标签: jquery cross-domain

我正在尝试在我的网页上显示来自其他网站的图片拼贴。如果我知道直接链接,它工作正常,因为我可以设置img src。但是,如果我只知道页面的名称,那个页面上的图像的id可以通过一些jQuery调用来检索src。

这样的东西,但在另一页上调用:

var imageSource = $("#pictureid").attr("src");

4 个答案:

答案 0 :(得分:0)

客户端javascript不是为此而设计的。你想做什么屏幕刮刮。你可以通过多种方式实现这一目标,最简单的方法是雅虎的YQL以及使用Node.JS,PHP或首选服务器语言的其他方式。

答案 1 :(得分:0)

不,如果您希望在网站上添加图片,则需要提供相应的网址。

答案 2 :(得分:0)

您想要的是对其他网站进行AJAX调用以引入HTML,然后查看该内容以查找您感兴趣的src标记的img属性。所有现代浏览器都有某种同源策略,但禁止这样做 - 你不能对当前文档域之外的任何东西进行AJAX调用(也就是说,在example.org页面上运行的脚本不能对foobar进行AJAX调用。 COM)。

这意味着您必须采用服务器端技术:在您选择的服务器端语言中,从外部页面加载HTML(大多数环境都绑定到libcurl,设计用于完成此操作)和然后解析它以找到图像。获得URL后,您可以轻松地将其插入动态HTML中。

也就是说,未经许可深层链接图像会违反网络礼节,甚至可能是非法的,这取决于您所在的司法辖区(您滥用其他人的服务器为您的访问者提供带宽,毕竟,在某些司法管辖区内可能属于非法黑客定义的东西);最好的办法是将图像本身拉入并在您自己的服务器上托管一份副本,这样您就可以使用自己的带宽来提供服务。当然,请尊重您使用的图像的版权和许可条款(如果有的话)。

答案 3 :(得分:0)

尝试这样的事情:

首先,我们需要一个简短的服务器端脚本来反弹我们的请求,因为AJAX受到相同原始策略的阻碍。这是PHP中的一些东西:

<?php if (isset($_GET['url'])) readfile($_GET['url']); ?>

我们说这是保存在get.php。要使用它,我们只需使用我们想要获取的页面的url设置查询字符串的url字段。该脚本从该页面获取所有HTML并输出它。例如,get.php?url=http://stackoverflow.com/将获取stackoverfllow的索引页中的所有HTML。

接下来,让我们编写一些jQuery来检索url上指定图片的src。像这样:

var url = 'http://www.pics.com/';
var selector = '#pic8';

$.get('get.php', { url: url }, function(htmlResponse) {
    var pic = $(htmlResponse).find(selector);
    alert(pic.attr('src');
}, 'html');

这应该有效。