从外部服务器加载元素内容

时间:2012-10-30 18:00:00

标签: php jquery

我正在根据供应商提供的产品数据构建我的网站。所有与产品相关的页面都位于供应商的网站上。

供应商允许我创建“产品摘要”链接,以将其用作Wordpress中的帖子。基本上该帖子包含一个简短信息的产品列表。

如果我点击其中一个产品,它会转到“产品详细信息”页面,它再次位于供应商的服务器上。

此时我所能做的就是在我的头版上将“产品摘要”帖子显示为预告片。

我真正想要在首页上用作预告片的是一些产品而不是产品摘要。

我使用file_get_contents()来回应我的“详细信息”帖子中的产品详细信息:

function demo_file_get_contents(){
    if(is_page('detail')){
       echo file_get_contents('http://vendorsite.com/product.html');
    }
}
add_action('wp_head','demo_file_get_contents');

然后我尝试捕获“绿色”属性,因此我可以将此产品分配到“绿色”类别,并在首页上将该产品显示为一组绿色产品图片。

function demo_retriveAttr(){
  if(is_page('detail')){
     ?>            
        <script type="text/javascript">                
          jQuery(document).ready(function() {   
            $('#color').load('http://mysite.com/detail.html #product-color');            
          });
        </script>
      <?php
  }
}
add_action('wp_footer','demo_retriveAttr');

我的问题是:

  1. file_get_contents是捕获外部数据的最佳做法吗?
  2. .load()函数不起作用,我做错了什么?

2 个答案:

答案 0 :(得分:1)

  1. 替代file_get_contents(),您也可以使用cURL方法(参考"Download a URL’s Content Using PHP cURL")。就最佳实践而言,我认为任何一种方法都是合适的。有关性能差异的一些很好的信息here

  2. .load()函数可能无法正常工作的原因有很多。您是否检查过控制台是否有任何错误消息?您是否有理由决定使用wp_head()挂钩加载外部服务器页面内容?如果file_get_contents()正在提取额外的[html],[head]和[body]标签,那么在同一文档中有多个上述标签存在冲突。

  3. 您能为detail.html文档提供一些代码吗?具体来说,你正在摇摆#product-color。

答案 1 :(得分:0)

快速回答

  1. 如果您的服务器可以访问该网站,则file_get_contents是一个不错的选择。
  2. 如果.load()函数不起作用,则可能必须启用CORS。浏览器通常会阻止跨域请求以确保安全。