强制回调以重新加载文件
Posted
技术标签:
【中文标题】强制回调以重新加载文件【英文标题】:Force Callback to reload file 【发布时间】:2015-04-08 09:38:10 【问题描述】:我正在使用 php 和 jQuery 工具来上传和裁剪图片。它运作良好。但我想在上传和裁剪图片后预览一下。我得到了预览,但这是裁剪前的照片。我猜它从任何缓存中获取图片。当我检查服务器上的真实文件时,它被裁剪了。
是否知道如何强制以下函数真正从服务器获取新文件?
那是代码,我把url放回表单中的div以供预览。
new ImgSelect( $('#imgselect_container'),
cropComplete: function(image)
$('.avatar').html('<img src="scripts/imgSelect/files/' + image.name + '">');
);
【问题讨论】:
如果这实际上是由缓存引起的,则将缓存破坏字符串附加到 url,如时间戳。+ image.name + '?t='+ timestamp +
好主意,但我收到了这个 javascript 错误:Uncaught ReferenceError: timestamp is not defined
你需要定义你的自我——我把它留给你作为练习。
【参考方案1】:
要强制重新下载图像,您可以在查询字符串中附加时间戳。试试这个:
$('.avatar').html('<img src="scripts/imgSelect/files/' + image.name + '?t=' + +new Date + '">');
您还可以修改服务器的缓存设置。
【讨论】:
感谢您的想法。我认为在新日期之前有一个 +,我放弃了,但仍然无法正常工作,同样的问题,未裁剪的图片将被加载。 @Fabrizio 不,new Date()
之前的+
是必需的。它将日期转换为数字。
:D 对不起,我现在用 + 做了,它给了我一个类似 ...?t=14.... 的网址,所以它看起来正确,但它仍然是未裁剪的图片。
“所以它看起来正确,但它仍然是未裁剪的图片” – 那么它可能不是实际的缓存问题,而是时机 i> 问题——因为图像尚未在服务器端完成处理。
好吧,您可以尝试超时,希望到那时处理已经完成……或者检查您正在使用的工具的文档,看看它是否明确提供了要处理的东西那个用例。以上是关于强制回调以重新加载文件的主要内容,如果未能解决你的问题,请参考以下文章