2014-01-09 54 views
0

我想使用.ajax来读取给定网址(int他的案例www.wikipedia.org)的源HTML到文档的正文中。下面的代码旨在做到这一点,但它不会返回(可能是错误的)预期结果。

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://code.jquery.com/jquery-latest.min.js"> 
</script> 
<script> 
$(document).ready(function() { 
    $.ajax({ 
     url: 'www.wikipedia.org', success: function(data) { 
      $('body').append(data); 
     } 
    }); 
}); 
</script> 
</head> 
<body></body> 
</html> 

没有人有一个想法,为什么它不能正常工作,也许这样当呈现页面显示在文档正文该链接的HTML如何补救?

+5

有一件事:http://? – NewInTheBusiness

+1

'url:'http:// www.wikipedia.org'' – Doorknob

+4

Then Then Origin Policy。 – Musa

回答

0

尝试前面加上HTTP://的URL,即http://www.wikipedia.org

+1

这将使OP过去原来的问题,然后到相同的来源问题。 – Pointy

+0

如何处理SO问题? –

+0

@JustinGreenough - 这是如何:https://github.com/padolsey/jquery.fn/tree/master/cross-domain-ajax –

0

正如迈克说,你需要添加http://到url的开始。

还有一个同源问题。为了通过AJAX请求页面并阅读结果,通常必须与您在同一个域中。

解决此问题的最佳方法是对请求使用代理。你可以使用setup your own或使用an existing service(如果你愿意依赖它)。

+0

是的,我当然想尝试用http://预先上面的地址,但结果是相同的(我假设,或许是正确的,浏览器将首先尝试一个http类型,就像卷曲一样)。我将如何设置代理脚本? –

+0

@JustinGreen你必须在服务器上做到这一点。浏览器不会让您从随机网址获取内容,除非其他网站通过HTTP标头明确允许。 – Pointy

+1

@JustinGreenough只是FYI,一个没有方案的URL被假定为一个相对URL,例如,'foo'变成了'http:// www.mypage.com/foo','www.wikipedia.org'变成了'http: // www.mypage.com/www.wikipeida.org' – apsillers