[英]jQuery .done function not firing in IE
在下面的JS中,.done函数在FF,Chrome和Opera中启动,但是在IE 10及更低版本中不会关闭。 它的想法是从网址中获取唯一的标识符,这将使代码能够确定从Flickr帐户中获取哪张照片集并显示在滑块中,以便以后在iFrame中使用。 但是,当涉及到IE10及更低版本时,.done似乎已被完全跳过。 .getJSON调用下面的所有内容都将被忽略。
$(window).load(function() {
var pathname = window.location.pathname;
var photoSetId = ['72157638321110124','72157638320688146','72157638320892573','72157638320142195', '72157638319052975'];
var setNum = window.location.href.split('?')[1];
var user = '110468775@N05';
var apiKey = 'fa3bd9c48f711aef070622ba60014b21';
var photoset = photoSetId[setNum];
var flickr = 'http://api.flickr.com/services/rest/';
$.getJSON( flickr, {
method: "flickr.photosets.getPhotos",
nojsoncallback: 1,
extras: "original_format",
api_key: apiKey,
photoset_id: photoset,
privacy_filter: '1',
format: 'json'
})
.done(function(data) {
console.log(data);
$.each( data.photoset.photo, function(i, item ) {
var url = 'http://farm' + item.farm + '.staticflickr.com/' + item.server + '/' + item.id + '_' + item.originalsecret + '_o.jpg';
var $li = $("<li>");
var $img = $("<img>").attr('src', url);
$img.appendTo($li);
$li.appendTo('.bjqs');
});
$('#slider').bjqs({
'height': 360,
'width': 640,
'showcontrols': true,
'centercontrols': true,
'showmarkers': false
});
});
});
它可用于IE以外的所有浏览器,因为IE以外的所有浏览器都支持带有XmlHTTPRequest对象的CORS,而IE要求在IE11之前使用XDomainRequest对象。
要解决此问题,请通过删除nojsoncallback参数交换为使用jsonp,然后将jsoncallback参数添加到flickr url中,以便jquery知道将flickr api的回调名称放在何处。
var flickr = 'http://api.flickr.com/services/rest/?jsoncallback=?';
$.getJSON( flickr, {
method: "flickr.photosets.getPhotos",
//nojsoncallback: 1,
extras: "original_format",
api_key: apiKey,
photoset_id: photoset,
privacy_filter: '1',
format: 'json'
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.