Javascript $.getJSON(jQuery)在IE 8中不起作用
有一些简单的AJAX代码可以在Firefox和Chrome中使用,但在IE中不能使用。我没有做任何花哨的事情,但是代码太长,无法在这里发布 基本上,它是:Javascript $.getJSON(jQuery)在IE 8中不起作用,javascript,jquery,ajax,internet-explorer,Javascript,Jquery,Ajax,Internet Explorer,有一些简单的AJAX代码可以在Firefox和Chrome中使用,但在IE中不能使用。我没有做任何花哨的事情,但是代码太长,无法在这里发布 基本上,它是: <script type="text/javascript"> var baseurl = 'http://mydomain.com/facebook/'; var setUpGame = function(lvl){ var ajaxurl; ajaxurl = baseurl+'ajax.php?f=gg&l
<script type="text/javascript">
var baseurl = 'http://mydomain.com/facebook/';
var setUpGame = function(lvl){
var ajaxurl;
ajaxurl = baseurl+'ajax.php?f=gg&l='+lvl;
$.getJSON(ajaxurl,function(data){
//do stuff with data here
});
};
$(document).ready(function(){
setUpGame(3);
});
</script>
var baseurl=http://mydomain.com/facebook/';
var setUpGame=功能(lvl){
var-ajaxurl;
ajaxurl=baseurl+'ajax.php?f=gg&l='+lvl;
$.getJSON(ajaxurl,函数(数据){
//在这里处理数据
});
};
$(文档).ready(函数(){
游戏设置(3);
});
问题是IE对$.getJSON有问题。调用堆栈显示它在jQuery内部失败(第123行,第183列),jQuery代码读取“returnnewa.XMLHttpRequest”
错误消息是“错误:对象不支持此属性或方法”。我已经验证了ajaxurl变量的值是否正确,以及URL是否返回正确的JSON
这可能是因为所有这些都在iFrame中运行吗?我从jQuery 1.4.2切换到了1.3.2,这个问题就消失了 我花了好几个小时才弄明白,希望我能帮别人省去头痛 正如其他地方提到的,IE不使用XMLHttpRequest 然而,其他地方发布的许多解决方案对我来说并不适用 我试过:
jQuery.support.cors=true代码>
但这似乎没有任何作用
$.ajax({
url : remote_cross_domain_non_local_url,
dataType : 'jsonp'
})
.success( function(data){ dosomethingwithdata(data); } );
这是一种黑客行为,因为我正在指定一个jsonp数据类型,即使返回的数据中没有包装函数。但是为了解决IE的XDomain问题,我们必须愚弄它,让它认为我们得到了一个JSONP脚本。尝试使用相对url而不是基本url。。。我在过去遇到过一些问题。相对URL不起作用:(当我使用IE的脚本调试器进行调试时,它会以红色显示ajaxurl变量。该变量的值是正确的,数据类型是string。但该值以红色显示。这有帮助吗?在代码中看到此情况的地方放置一个断点,并检查所有变量,以确保它们是您认为的。数据类型和类型是什么
ajaxurl
在代码中的红色点处的值?另外,只需确保iframe中的AJAX请求指向相同的域(完全相同的域)作为iframe文档。我已经在dev.jquery.com上创建了一个bug报告。不过,我不想仓促行事。如果他们进行调查并返回错误的其他原因,我将在这里发布正确的答案。