我想做什么:
我想通过跨域从php页面中选择一个数字,然后使用jquery将其用作iframe上的高度。 page.php示例输出:195
这就是我所做的:
$(document).ready(function() {
$.get("http://domain.com/page.php", function(data){
$('#Myiframe').attr("height", data + "px");
});
});
这在Chrome,firefox和safari中效果很好,但在IE 7/8中没有(我想你已经猜到了)(没有9)。有关于跨域协议的东西吗?我在我的php页面上使用它:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: x-requested-with");
有谁知道为什么这在IE中不起作用?
答案 0 :(得分:1)
检查data
中是否有任何值或控制台中是否存在任何跨域错误。
如果一切顺利,请使用:
$('#MyIframe').css('height', data + 'px');
答案 1 :(得分:0)
不太优雅但更坚固的解决方案是使用JSONP来避免使用XMLHttpRequest。
假设API调用是num_votes(id)
之类的函数,您可以通过注入<script src="http://example.com/jsonp.php?m=num_votes&id=123"></script>
之类的标记来调用它。
然后,此脚本的主体将调用您选择的函数。由于您必须使用全局回调函数,因此应设置回调注册表,以便JSONP API返回myCallbacks[$ID]({votes: 1234});
<script>
my_callbacks={};
on_ready(
qid = 'q'+Math.floor(Math.random()*(1<<16));
tag = create_element('script')
tag.src = api_url + 'jsonp=my_callbacks.'+qid;
my_callbacks[qid] = function(o) { alert('votes: ' + o.votes); };
body.append(tag);
);
</script>