Форум Академгородка, Новосибирск > Ajax-jquery не выводит изображение, сформированное php-GD в IE 7
Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ajax-jquery не выводит изображение, сформированное php-GD в IE 7
Форум Академгородка, Новосибирск > Компьютеры и сети > Программирование > WEB-программирование
Astronom
Не могу добиться, чтобы а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-скрипте, все равно не помогает.
Выручайте, коллеги.
Бян
А если так?
Код
header("Content-Type: image/jpeg");

Astronom
Пробовал. На самом деле проблема оказалась в том, что надо было post а не get использовать.))
IE отличается отсутствием сообразительности, в отличие от других браузеров.
Банальная невнимательность - как следствие программирования в 5 часов утра))
Бян
А зачем вы два раза загружаете одну и тоже изображение?
Eyeless Watcher
Кстати да, на кой черт тут вообще аякс-то? Просто src меняете у картинки, и оно само загрузится.
Если хочется показывать картинку только после того, как она загрузилась - показывайте в ее onload.
Со спиннером аналогично - включаете перед подменой src, выключаете в onload.
И да, зачем для картинки кэш-то отключать?
Astronom
Цитата(Бян @ 11.05.2011, 14:22) *
А зачем вы два раза загружаете одну и тоже изображение?

Изображения разные, так как параметр start увеличивается при каждом клике на 1 и соответственно на единицу большее значение передается в строке параметров для запроса из базы.
Astronom
Цитата(Eyeless Watcher @ 11.05.2011, 14:26) *
Кстати да, на кой черт тут вообще аякс-то? Просто src меняете у картинки, и оно само загрузится.
Если хочется показывать картинку только после того, как она загрузилась - показывайте в ее onload.
Со спиннером аналогично - включаете перед подменой src, выключаете в onload.
И да, зачем для картинки кэш-то отключать?

С аяксом посовременнее смотрится, можно показать индикатор загрузки, которые многие так любят)))
А кеш я отключал, я просто слышал много историй про глюки IE с изображениями, сгенерированными скриптами php в духе <img src=index.php>
Он их типа кэширует и с обновлением изображений возникают сложности. Вернул его обратно. В моем случае проблема в другом оказалась.
Eyeless Watcher
Цитата(Astronom @ 11.05.2011, 15:40) *
Цитата(Eyeless Watcher @ 11.05.2011, 14:26) *
Кстати да, на кой черт тут вообще аякс-то? Просто src меняете у картинки, и оно само загрузится.
Если хочется показывать картинку только после того, как она загрузилась - показывайте в ее onload.
Со спиннером аналогично - включаете перед подменой src, выключаете в onload.
И да, зачем для картинки кэш-то отключать?

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

Индикатор можно показать и без двух запросов за одной картинкой. У вас вообще результат аяксового запроса не обрабатывается, так зачем же он тогда?
Astronom
С чего вы взяли что он не обрабатывается? Все отлично обрабатывается.
Eyeless Watcher
Цитата(Astronom @ 12.05.2011, 0:23) *
С чего вы взяли что он не обрабатывается? Все отлично обрабатывается.

Ну у вас там код коллбека как бэ написан. В котором данные, пришедшие в ответ, не используются.
Astronom
Цитата(Eyeless Watcher @ 11.05.2011, 23:32) *
Цитата(Astronom @ 12.05.2011, 0:23) *
С чего вы взяли что он не обрабатывается? Все отлично обрабатывается.

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

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, что доказывает практика, ничего не изменится.
Eyeless Watcher
Внимание, вопрос. Что изменится, если вместо всего аякса оставить только коллбек?
Бян
Цитата(Astronom @ 11.05.2011, 14:40) *
А кеш я отключал, я просто слышал много историй про глюки IE с изображениями, сгенерированными скриптами php в духе <img src=index.php>
Он их типа кэширует и с обновлением изображений возникают сложности. Вернул его обратно. В моем случае проблема в другом оказалась.

Я так и не понял в чём)
Astronom
Цитата(Eyeless Watcher @ 12.05.2011, 0:01) *
Внимание, вопрос. Что изменится, если вместо всего аякса оставить только коллбек?

И правда, ничего не изменится. Действительно, тогда в данном случае в аяксе нет никакой необходимости... Урезал скрипт в 2 раза по размеру)
Astronom
Цитата(Бян @ 12.05.2011, 0:24) *
Цитата(Astronom @ 11.05.2011, 14:40) *
А кеш я отключал, я просто слышал много историй про глюки IE с изображениями, сгенерированными скриптами php в духе <img src=index.php>
Он их типа кэширует и с обновлением изображений возникают сложности. Вернул его обратно. В моем случае проблема в другом оказалась.

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

В нехватке знаний)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2024 IPS, Inc.