Перейти к содержанию
Посмотреть в приложении

A better way to browse. Learn more.

Форум Академгородка, Новосибирск

A full-screen app on your home screen with push notifications, badges and more.

Чтобы установить это приложение на iOS и iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
Чтобы установить это приложение на Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Ajax-jquery не выводит изображение, сформированное php-GD в IE 7

Опубликовано

Не могу добиться, чтобы аjax-jquery выводил изображение, сформированное php-GD в IE

 

Собственно, код:

 

var start=0;
$('#gallery a#next_g').click(function(next1){
next1.preventDefault();
start++;   
var fotolist=$(this).attr('href');
var queryfoto=fotolist.slice(fotolist.indexOf('?')+1);
$.ajax({
    url: "ajaxfoto.php",
       type: "post",
       dataType: "html",
       data: queryfoto+'&start='+start,
       beforeSend: function (){
                $('#image_loader_2').show();
       },
       success: function(data, status){
$('#imageslider img').attr('src', 'ajaxfoto.php?'+queryfoto+'&start='+start);
       },
       complete: function(){
        $('#image_loader_2').hide();
       }
   });
});

 

Вручную если ввожу параметры query_string, то все работает как надо во всех браузерах, включая и IE

 

Пробовал использовать

 

// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// HTTP/1.0
header("Pragma: no-cache");

в Php-скрипте, все равно не помогает.

Выручайте, коллеги.

Рекомендуемые сообщения

Опубликовано
  • Автор

Пробовал. На самом деле проблема оказалась в том, что надо было post а не get использовать.))

IE отличается отсутствием сообразительности, в отличие от других браузеров.

Банальная невнимательность - как следствие программирования в 5 часов утра))

Опубликовано

Кстати да, на кой черт тут вообще аякс-то? Просто src меняете у картинки, и оно само загрузится.

Если хочется показывать картинку только после того, как она загрузилась - показывайте в ее onload.

Со спиннером аналогично - включаете перед подменой src, выключаете в onload.

И да, зачем для картинки кэш-то отключать?

Опубликовано
  • Автор
А зачем вы два раза загружаете одну и тоже изображение?

Изображения разные, так как параметр start увеличивается при каждом клике на 1 и соответственно на единицу большее значение передается в строке параметров для запроса из базы.

Опубликовано
  • Автор
Кстати да, на кой черт тут вообще аякс-то? Просто src меняете у картинки, и оно само загрузится.

Если хочется показывать картинку только после того, как она загрузилась - показывайте в ее onload.

Со спиннером аналогично - включаете перед подменой src, выключаете в onload.

И да, зачем для картинки кэш-то отключать?

С аяксом посовременнее смотрится, можно показать индикатор загрузки, которые многие так любят)))

А кеш я отключал, я просто слышал много историй про глюки IE с изображениями, сгенерированными скриптами php в духе <img src=index.php>

Он их типа кэширует и с обновлением изображений возникают сложности. Вернул его обратно. В моем случае проблема в другом оказалась.

 

Опубликовано
Кстати да, на кой черт тут вообще аякс-то? Просто src меняете у картинки, и оно само загрузится.

Если хочется показывать картинку только после того, как она загрузилась - показывайте в ее onload.

Со спиннером аналогично - включаете перед подменой src, выключаете в onload.

И да, зачем для картинки кэш-то отключать?

С аяксом посовременнее смотрится, можно показать индикатор загрузки, которые многие так любят)))

Индикатор можно показать и без двух запросов за одной картинкой. У вас вообще результат аяксового запроса не обрабатывается, так зачем же он тогда?

Опубликовано
С чего вы взяли что он не обрабатывается? Все отлично обрабатывается.

Ну у вас там код коллбека как бэ написан. В котором данные, пришедшие в ответ, не используются.

Опубликовано
  • Автор
С чего вы взяли что он не обрабатывается? Все отлично обрабатывается.

Ну у вас там код коллбека как бэ написан. В котором данные, пришедшие в ответ, не используются.

Ajax запрос возвращает вот это:

success: function(data, status){

$('#imageslider img').attr('src', 'ajaxfoto.php?'+queryfoto+'&start='+start);

},

 

то есть скрипт присваивает картинке в блоке новый путь, а по новому пути браузер ждет новое изображение, сгенерированное скриптом.

Просто data по сути это рисунок, так как скрипт возвращает header("content: image/{jpeg, gif, png}"), и этот же рисунок определяется по ссылке ajaxfoto.php?'+queryfoto+'&start='+start

Если я заменю на ссылку на data, что доказывает практика, ничего не изменится.

Опубликовано
А кеш я отключал, я просто слышал много историй про глюки IE с изображениями, сгенерированными скриптами php в духе <img src=index.php>

Он их типа кэширует и с обновлением изображений возникают сложности. Вернул его обратно. В моем случае проблема в другом оказалась.

Я так и не понял в чём)

Опубликовано
  • Автор
Внимание, вопрос. Что изменится, если вместо всего аякса оставить только коллбек?

И правда, ничего не изменится. Действительно, тогда в данном случае в аяксе нет никакой необходимости... Урезал скрипт в 2 раза по размеру)

Опубликовано
  • Автор
А кеш я отключал, я просто слышал много историй про глюки IE с изображениями, сгенерированными скриптами php в духе <img src=index.php>

Он их типа кэширует и с обновлением изображений возникают сложности. Вернул его обратно. В моем случае проблема в другом оказалась.

Я так и не понял в чём)

В нехватке знаний)

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

Аккаунт

Навигация

Поиск

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.