.load子域中的内容

时间:2014-12-05 15:32:54

标签: jquery ajax json

尝试使用.load调用子域中的内容时出现问题

经过谷歌搜索和阅读并没有真正理解我不认为这可以做到吗?

以下是我收到的错误:

  

XMLHttpRequest无法加载http://content.domain.co.uk/test.html。没有   '访问控制允许来源'标题出现在请求的上   资源。起源' http://www.domain.co.uk'因此是不允许的   访问。

我已经在某处读过我可以将document.domain添加到我的外部文件中 - 这也不起作用 - 我这样做了吗?!我不确定。

<script type="text/javascript">
            document.domain = 'domain.co.uk';
</script>

这是我的代码:

$(function() {
    $('#activate').click( function() {
        $('#activate').hide();
        $('#loadingImg').show();
        $('#testContainer').load('http://content.domain.co.uk/test.html #main', function() {
            $('#loadingImg').hide();
       });
   });
});

我已经读过,我尝试做的事情可能是使用JSON实现的 - 但是,我真的不知道该怎么做或怎么做。任何帮助都会非常感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要提供一个Access-Control-Allow-Origin标头才能工作。 由于您正在访问.html文件,因此必须通过Web服务器完成。 如果您使用的是Apache,请执行以下操作:http://enable-cors.org/server_apache.html

如果子域在您的控制之下,您可以使用某种脚本语言包装html文件,例如PHP:

<?php
  header("Content-type: text/plain; charset=utf8");
  header("Access-Control-Allow-Origin: *");
  header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");

  echo file_get_contents("file.html");
?>

另一种方法是使用JSONP:http://en.wikipedia.org/wiki/JSONP