替代iFrame从外部网站或表单中提取实际数据

时间:2013-02-28 22:04:23

标签: php html iframe

好的......我会尽力完成我的问题(所以,对于长度感到抱歉)...我一直在尝试在网上搜索一个理想的解决方案。我建立了我们公司的网站(自学),一些东西开始与一些不错的CSS和PHP包括我的页眉和页脚,并准备在我的CSS中使用一些媒体查询与不同的浏览器大小/分辨率,并获得一些好的响应式网页设计。作为我们行业的产品供应商,我们将产品数据上传到名为Sage的服务中。他们为我们提供了一个我们可以使用的个人网站,它可以提供我们提供给他们的产品数据。但是,他们的网站设计不是很好,我们只想将产品数据导入我们现有的网站。

目前,我们针对每个产品类别的网站页面仅使用iframe,其中src网址指向由他们提供给我们的Sage网站上的the search form结果生成的链接。显然这不是很好,因为拉入数据的速度很慢,而且我的iframe的大小必须始终适合最大高度,因为我不想让iframe滚动条。

再一次,我自学了网络开发,我的唯一工具是健康的谷歌......只是阅读源代码,所以如果你有任何建议,请具体和详细。

我在其他人发布的网站上发现了一些实际ALMOST使用以下代码为我工作的东西(我正在this URL进行测试(如果你想看看发生了什么)。

它使用以下代码:

<?php $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.promoplace.com/ws/ws.dll/StartSrchDistID=36182&ProdSelect=&Srching=1&CatName=Pens&catmoveto=Pens&category=221&keywords=&itemnum=&LoP=&HiP=&Qty=&Search.x=44&Search.y=22&Search=submit&GlobalSearch=");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); ?>
<?php $result = curl_exec($ch);
curl_close($ch); ?>
<?php $result = preg_replace("#(<\s*a\s+[^>]*href\s*=\s*[\"'])(?!http)([^\"'>]+([\"'>]+)#",'$1http://www.promoplace.com/$2$3', $result);
echo $result ?>

如果你查看我的测试页面...数据已经足够好了,但是外部图像没有显示,当你点击查看“更多细节”时,它会附加正确的实际链接数据。来自外部域到MY域,它指向外部存在的目录,而不是我的域。这显然是因为图像使用的是本地编写的链接。我假设上面的$ results = preg_replace ..... ...命令在某种程度上纠正了这一点,所以也许我做错了,我已经差不多了。

如果有人有任何想法或更好,更清洁的方法来实现这一目标,那么你的帮助将非常感激。我真的学到了很多东西,享受这一切。

2 个答案:

答案 0 :(得分:3)

如果你不想使用iframe而你正在使用jQuery,你可以这样做。请尝试以下代码:

使用div标签

而不是iframe标记
<div id="divId"></div>

将此代码放在<head>代码

<head>
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js?ver=1.4'></script>

<script type='text/javascript'>
$(document).ready(function (){
$('#divId').load(url of target website what you must load);     
});
</script>
</head>

目标网站或网页(指定网址)中的所有内容都将插入#divID div标记内。希望这可以帮助。一切顺利!

答案 1 :(得分:-1)

您可以尝试使用对象元素,该元素允许您单击以子页面为目标的链接。试试这个:

<object height="100%" width="100%" data="http://foo.com">

将您的风格设置为:

html, body{height: 100%;min-height: 100%;}

如果子页面与父页面不在同一个域中,请确保设置CORS。