如果不使用代理页面或 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 数据参数作为查询参数。
此外,您可以将类型更改为 aPOST
然后数据将像通过表单一样发布到我们请求的代理页面。
编辑2:
我不是 php 人,但我在 googlez 中扔了 php 代理页面并找到了一些可能的解决方案。你可以试试这个:How to proxy another page in PHP
同样,我不是一个 php 人,所以可能有其他更好的方法,但你可以尝试提取查询参数:http: //php.net/manual/en/reserved.variables.get.php