我想知道一个类似的代码,使用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>
谢谢!
答案 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