$ .getJSON和谷歌字体API停止工作,在Internet Explorer中使用jQuery

2019-07-30 21:08发布

我花了几乎一整天时间来找到解决这个问题。

我已经成功地编写代码,以动态检索和显示一大堆使用谷歌API的字体和jQuery 1.4.4字体。 (在所有浏览器)

我不得不jQuery的改变1.7.2版本,不幸注意到代码我所写的作品以及在所有浏览器,除了IE浏览器。

我做了一些测试,发现在Internet Explorer $ .getJSON或$就无法使用比1.4.4更高版本的jQuery时加载从谷歌JSON字体数据。

这是我使用的代码:

$(function(){           

$.getJSON('https://www.googleapis.com/webfonts/v1/webfonts?key=XXXXXX', function(json) {

alert(json);

});
});

经过一番研究,我已经试过这太:

$.ajax({
type: "get",
url: "https://www.googleapis.com/webfonts/v1/webfonts?key=XXXXXXXX",
cache:false,
dataType:'json',
success: function(data){
alert(data);
}
});

这两种方法都失败在使用Internet Explorer的任何版本的jQuery 1.4.4相比更大 - 什么也没有发生。

任何想法,为什么? 谢谢您的帮助。

Answer 1:

这似乎是IE浏览器正在阻止您网站的域名之外的连接主机。 这是由于同源策略 。 这通常不是什么大不了的事了最新和最伟大的浏览器在那里,但它仍然可以与任何浏览器发生。 我测试使用的jsfiddle您的代码,并在Chrome 21扔大约相同的起源错误。

通常情况下,解决这个问题的方法是使用JSONP。 不幸的是,谷歌网络字体API不支持JSONP。 我能想获得这些数据的跨浏览器的最佳方法是使用服务器端编程语言下载JSON如PHP。 从那里,你可以呼应JSON该网页,并使用$.getJSON函数本地抓住你的服务器上的数据。

实例:fontApi.php(你的服务器上的本地文件)

<?php
$json = file_get_contents('https://www.googleapis.com/webfonts/v1/webfonts?key=XXXXXX');
die($json); // prints JSON to the screen that jQuery can use
?>

然后使用下面的jQuery ...

$.getJSON('fontApi.php', function(json) {
    //your code
});

希望这可以帮助你:)



文章来源: $.getJSON and google fonts API stops working in internet explorer with jQuery versions greater than 1.4.4