【发布时间】:2010-10-26 14:37:31
【问题描述】:
我正在使用自定义 php 脚本和 GD 库基于 POST 中的一些默认值和参数呈现自定义图像。
我正在尝试构建一个自定义表单以允许用户选择这些参数,然后发送 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 等。
如果大家有任何建议,我将不胜感激。
谢谢!!
【问题讨论】:
标签: ajax image-processing png gd