Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > JQuery. Обновление картинки


Автор: Gold Dragon 22.3.2011, 13:35
есть код
Код

...........
<img id="img_code" src="" border="0" alt="Защитный код" align="left" hspace="10" />
...........
<script type="text/javascript">
    code_change();
    function code_change(){
        $("#img_code").attr("src","images/tpl/ajax-loader.gif");
        $.get("code.php", function(data){
            $("#img_code").attr("src", "images/code_image.png");
        });
        return false;
    }
</script>
.........

в файле code.php формируется картинка проверочного кода и перезаписывается по адресу images/code_image.png

Функция вызывается при нажатии на ссылку, картинка отлично перезаписывается всегда с новым кодом... но вот визуально картинка не меняется. 

Как это исправить?

Автор: Gold Dragon 22.3.2011, 15:10
я понимаю что нужно копать в сторону кеша, но не пойму что и куда

Автор: ayax2005 22.3.2011, 17:04
Ну либо генерьге случайное имя файла либо в сорсе указывайте адрес пхп скрипта, генерящего картинку.

Автор: Gold Dragon 23.3.2011, 08:06
а иначе обновить картинку не получится?

Автор: ayax2005 23.3.2011, 08:32
Картинка - если её размер не изменился (а имя файла у вас такое же) будет считаться браузером не изменённой и будет загружена из кэша

Автор: Gold Dragon 23.3.2011, 11:55
Цитата(ayax2005 @  22.3.2011,  18:04 Найти цитируемый пост)
 в сорсе указывайте адрес пхп скрипта, генерящего картинку. 

вот и не получается у меня это... в итоге скрипт формирует картинку
Код

imagepng($scr);
// где $scr и есть GD-поток изображения

и в data  возвращается картинка.
если просто задать
Код

<img id="img_code" src="code.php" />

то выйдет картинка... а вот через JQuery ни чего не выводит, хотя поток возвращает
Код

$("#img_code").attr("src", data);

Автор: ayax2005 23.3.2011, 13:13
ну магия) проверяйте пути

Автор: Gold Dragon 23.3.2011, 13:19
какие пути?

я для проверки добавил
Код

$("#test").html(data);

и там выводится содержание картинки формата PNG
так что пути нормальные... Может просто scr требует именно наличие файла физически?

Автор: z-END 23.3.2011, 13:20
а так тоже не получается?
Код

  $("#img_code").attr("src", "images/code_image.png?"+time());


Добавлено через 1 минуту и 29 секунд
но вообще подход в корне не правильный... при нескольких пользователях одновременно будут происходить неприятные колизии

Автор: ayax2005 23.3.2011, 13:24
Цитата(Gold Dragon @  23.3.2011,  11:55 Найти цитируемый пост)
и в data  возвращается картинка.

Цитата(Gold Dragon @  23.3.2011,  13:19 Найти цитируемый пост)
и там выводится содержание картинки формата PNG
 
Вот эти две фразы меня смущают. Покажите, что именно возвращает data в alert-е



Автор: Gold Dragon 23.3.2011, 13:36
z-END, а что это даст?
И как ты предлагаешь сделать?

вот адрес который сейчас в тестовом режиме
http://tigris-tambov.ru/
Большинство функций сейчас отключено, сами понимаете, всё таки сайт рабочий smile

Но суть простая, полностью всё сделано на AJax, т.е. есть страница обратной связи, которая загружается динамически, там есть форма для отправки сообщений в которую необходимо вмонтировать проверочный код. Я пользуюсь небольшим скриптом который на выходе выдаёт картинку.. Всё работало везде бес проблем, а вот через JQuery не могу обновить

Добавлено @ 13:37
сейчас на сайте вывод файла

Добавлено @ 13:40
Цитата(ayax2005 @  23.3.2011,  14:24 Найти цитируемый пост)
Вот эти две фразы меня смущают. Покажите, что именно возвращает data в alert-е
вот что не в alert, а в DIV

user posted image

Добавлено @ 13:42
как видно это есть картинка smile

Добавлено через 13 минут и 33 секунды

если нужны какие-либо скрипты, могу выложить?

Автор: z-END 23.3.2011, 14:13
Цитата(Gold Dragon @  23.3.2011,  14:36 Найти цитируемый пост)
z-END, а что это даст?

а попробывать?

Добавлено через 3 минуты и 9 секунд
Цитата(Gold Dragon @  23.3.2011,  14:36 Найти цитируемый пост)
И как ты предлагаешь сделать?

выше уже писали - генерировать изображение через php. 
ну и разбиратья почему оно приходит к тебе таким.. 

Автор: ayax2005 23.3.2011, 14:17
Gold Dragon, ну вы же сами видете - это именно картинка, битовое содержимое. А для вставки в сорс нужно использоватьи мя файла. Чуете разницу?
Замените свой тег img на iframe и уже в html ифрэйма вставляйте содержимое data - и будет вам счастье.

Добавлено через 1 минуту и 5 секунд
Цитата(Gold Dragon @  23.3.2011,  13:36 Найти цитируемый пост)
z-END, а что это даст?

возможно, прокатит как уникальное имя файла)

Автор: Gold Dragon 23.3.2011, 14:19
z-END, так картинка вообще не загружается

Добавлено через 1 минуту и 18 секунд
Цитата(ayax2005 @  23.3.2011,  15:17 Найти цитируемый пост)
Замените свой тег img на iframe и уже в html ифрэйма вставляйте содержимое data - и будет вам счастье.

если не трудно, примерчик можно.. у меня напряги с iframe smile

Автор: Gold Dragon 23.3.2011, 14:37
z-END, а какой ты вариант можешь предложить?

Автор: Gold Dragon 25.3.2011, 08:02
пробовал через iframe, тоже как-то не пошло, или что-то не так делаю...

Ещё есть какие идеи?

Автор: z-END 25.3.2011, 10:10
Код

<div id="img_code"></div>
...
   $.get("code.php", function(data){
             $("#img_code").html("<img src='images/code_image.png?"+time()+"' >");

        });


так попробуй

Автор: Gold Dragon 25.3.2011, 10:36
z-END, так вообще картинка не загружается, такое ощущение что функция зацикливается или где-то ошибка и она не выполняется...

если честно, то я не понимаю как это может исправить положение..

Автор: z-END 25.3.2011, 13:01
как говорил доктор быков "включи логику", а в нашем случае - включи дебаггер и посмотри на что он ругается...
функции time() нет - это образное обозначение.  
Код

function time(){
    return  new Date().getTime();
}



Добавлено через 3 минуты и 59 секунд
Цитата(Gold Dragon @  23.3.2011,  14:36 Найти цитируемый пост)
как видно это есть картинка 

а при выводе данных content-type установлен?

Добавлено через 5 минут и 11 секунд
т.е. code_image.php 
Код

<?php
header('Content-type: image/png');
....

Автор: Gold Dragon 25.3.2011, 13:08
z-END, вот ты зверь...  smile долго меня мучил..... А я чувствую что функция не находится, думал что IDE моя глючит... а оказывается нет такой буквы.. Вон оно чё smile


Теперь всё работает! Сейчас погоняю, а потом отпишусь

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)