AJAX загрузка рендеринга PNG не работает - PullRequest
0 голосов
/ 15 мая 2009

Я рендеринг собственного изображения на основе некоторых параметров по умолчанию и параметров в POST с помощью специального сценария php и библиотеки GD.

Я пытаюсь создать пользовательскую форму, чтобы пользователи могли выбирать эти параметры, а затем отправлять запрос AJAX для рендеринга изображения и отправки его обратно и загрузки предварительного просмотра на странице.

Проблема в том, что первый предварительный просмотр работает, но после этого я не могу больше загружать предварительный просмотр. Я просто продолжаю видеть одно и то же изображение в окне предварительного просмотра. Тем не менее, я записываю образ на диск, и он обновляется очень хорошо, поэтому я представляю, что это какой-то apache или браузер кеширования. Вот некоторый код:

AJAX-запрос похож на

preview = new Image;
preview.src = url;
$(preview).load(preview.src, imagedata, function() {                                               
   $('#gaga-preview-space').html(this);                                                             
});

Где imagedata - это массив с bgcolor и т. Д. Я также генерирую временную метку для каждого запроса, в надежде, что это остановит apache от кэширования ответа. Это работало в других случаях, но не в этом.

Сценарий генерации php выглядит следующим образом:

// Save file
$file = "/var/www/tribegaga/sites/all/files/gaga_customization/test.png";
$result = imagepng($image, $file);

// Spit out file
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
header("Content-Type: image/png");
imagepng($image);

imagedestroy($image);

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

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

Обновление: Хорошо, проблема заключалась в том, что браузер не POST получает изображение, он получает, поэтому теперь мой скрипт отправляет строку GET, и все это прекрасно работает. Но я бы предпочел, чтобы изображение не было src = http://site/script.php?string=params&test=foo и т. Д.

Если у вас есть предложения, я буду признателен.

Спасибо !!

1 Ответ

2 голосов
/ 15 мая 2009

Вы также можете попробовать установить заголовки Expires (для даты в прошлом) и Last-Modified (для текущей даты / времени).

...