强制回调以重新加载文件

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> 问题——因为图像尚未在服务器端完成处理。 好吧,您可以尝试超时,希望到那时处理已经完成……或者检查您正在使用的工具的文档,看看它是否明确提供了要处理的东西那个用例。

以上是关于强制回调以重新加载文件的主要内容,如果未能解决你的问题,请参考以下文章

如何强制重新加载缓存的 HTML 文件

强制 UIPickerView 重新加载数据

Wordpress 音频播放器和 SmoothState。调用回调以在新页面上重新加载播放器?

如何强制重新加载 NLog 配置文件?

使用浏览器后退按钮时如何强制重新加载页面?

如何强制重新加载 php.ini 文件?