Javascript 如何使用jQuery文件上载更新上载的图像?
我正在使用PHP,它工作得很好。唯一的问题是,当我在同一页面(index.html)的浏览器中打开两个选项卡,并在选项卡1中上载照片时,我看到上载的照片,但当我转到选项卡2时,没有上载的照片。我必须刷新页面才能看到它 所以我试着用这种方式来解决这个问题:Javascript 如何使用jQuery文件上载更新上载的图像?,javascript,jquery,file-upload,jquery-file-upload,Javascript,Jquery,File Upload,Jquery File Upload,我正在使用PHP,它工作得很好。唯一的问题是,当我在同一页面(index.html)的浏览器中打开两个选项卡,并在选项卡1中上载照片时,我看到上载的照片,但当我转到选项卡2时,没有上载的照片。我必须刷新页面才能看到它 所以我试着用这种方式来解决这个问题: setInterval(function() { $.ajax({ url: $('#fileupload').fileupload('option', 'url'), dataType: 'json',
setInterval(function() {
$.ajax({
url: $('#fileupload').fileupload('option', 'url'),
dataType: 'json',
context: $('#fileupload')[0]
}).always(function () {
$(this).removeClass('fileupload-processing');
}).done(function (result) {
$(this).fileupload('option', 'done').call(this, $.Event('done'), {
result: result
});
});
}, 3000);
工作正常,但不是很好。每三秒钟我就会重复上传的所有图片(不是我刚刚上传的那个)。我还尝试删除所有图像列表$(“ul.files”).find(“.template download”).remove()编码>然后添加它们,这样图像就不会重复。但正如我所说的那样,它的效果不太好
感谢您的帮助。谢谢大家! 您每3秒钟在每个选项卡中上传一次照片??您知道这只是对带宽和服务器处理的浪费,对吗
当然,您的映像会重复,因为对于服务器来说,每次执行此代码都是一个新映像。如果您创建一个只刷新de页面的方法不是更好吗?我的意思是,我假设你将上传的照片存储在服务器中(否则你将无法在其他选项卡中看到它们)。只需轮询服务器,了解是否每三秒上传一次新照片
或者更好的是,如果你的目标是支持该对象的兼容html5的浏览器,你可以在那里添加(或更新)一个属性。同一域中的任何其他选项卡将立即收到添加/修改此类属性的事件。您可以使用它来了解何时上载了新图像
//when the image has uploaded...
sessionStorage.setItem('images', 'number-of-images');
如果您的页面中有这样的事件处理程序,则当此属性更改时,您将收到通知,指示您可以刷新页面并获取新图像:
window.addEventListener('storage', function(e) {
if (e.key == 'images') { //key 'images' updated.
//refresh page via AJAX.
}
}, false);
理想情况下,如果sessionStorage
可用,则使用此方法,如果服务器不可用,则默认为轮询服务器:
if (window.sessionStorage) {
//sessionStorage support, use the event.
} else {
//default to polling the web server for updates
}
希望这对你有帮助