使用jQuery打开外部域URL

时间:2012-08-03 18:30:41

标签: jquery json url html

我想知道一个类似的代码,使用Jquery将外部域URL显示为div。我知道我需要使用Json,但我找不到一个明确的例子来完全按照下面的代码做的。

<div id="external"></div>
<script type='text/javascript'>
$(document).ready(function(){
$("#external").load("http://www.domain.com/file.php?param=option");});</script>

谢谢!

3 个答案:

答案 0 :(得分:2)

你不能使用jsonp数据类型.load加载。它没有那种方式。

JSONP数据类型要求您的外部URL返回有效的JSONP。 JSONP != HTML

JSONP可以包含HTML,但是外部URL必须以该格式返回它。如果您无法控制外部网址,除了让您的服务器获取html或使用iframe之外,您无能为力。

答案 1 :(得分:0)

您的脚本使用ajax加载来自http://www.domain.com/file.php?param=option的内容,并将其放入ID为#external的div中

如果您要打开网址,则应在标记上使用.attr()属性,并将其设置为您要打开的链接。

答案 2 :(得分:0)

如果不使用代理页面或jsonp,您无法执行此类跨域Ajax调用。尝试使用ajax执行此操作违反了相同的原始策略:http://en.wikipedia.org/wiki/Same_origin_policy。我认为代理页面是一个简单的解决方案。基本上用php,coldfusion或你使用的任何web语言创建一个页面来获取你想要加载的URL。一旦你有了这个,你可以做这样的事情:

$.ajax({
    url: 'http://YOURSITE/YOURPROXYPAGE.cfm',
    type: 'GET',
    data : {param1 : 'something', param2 :'other'}
    success : function(data){
        $('#external').html(data);
    },
    error : function(x,t,e){
        console.log(x);
        console.log(t);
        console.log(e);
    },
    dataType: 'html'
});

编辑1: 注意我在上面添加了一个数据字段。此数据字段将是我们要传递到我们发送ajax请求的页面的数据对象。在ajax代理页面上,我们可以将ajax数据参数作为查询参数拉出来。

此外,您可以将类型更改为POST,然后将数据作为表单发布到我们正在请求的代理页面上。

编辑2:

我不是一个php人,但我在googlez中抛出了php代理页面并找到了一些可能的解决方案。您可以尝试:How to proxy another page in PHP

同样,我不是一个php人,所以可能还有其他更好的方法,但是你可以尝试提取查询参数:http://php.net/manual/en/reserved.variables.get.php