Функция jQuery .done не запускается в IE

0

В следующем JS функция.done запускается в FF, Chrome и Opera, однако в IE 10 и ниже она не исчезает. Идея этого - захват уникального идентификатора из URL-адреса, позволит коду решить, какой фотосет захвачен из учетной записи 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
        });
    });
});
  • 0
    ты удивлен?
  • 0
    Проверьте консоль ошибок и вкладку сети.
Показать ещё 6 комментариев
Теги:
internet-explorer

1 ответ

1
Лучший ответ

Он работает во всех браузерах, кроме IE, потому что все браузеры, отличные от IE, поддерживают CORS с объектом XmlHTTPRequest, тогда как IE требует использования объекта XDomainRequest вместо IE11.

Чтобы исправить это, замените на jsonp, удалив параметр nojsoncallback, затем добавьте параметр jsoncallback в URL-адрес flickr, чтобы 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'
})
  • 0
    Привет, Кевин, снова молодец! ;) :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню