Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery文件上载更新上载的图像?_Javascript_Jquery_File Upload_Jquery File Upload - Fatal编程技术网

Javascript 如何使用jQuery文件上载更新上载的图像?

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',

我正在使用PHP,它工作得很好。唯一的问题是,当我在同一页面(index.html)的浏览器中打开两个选项卡,并在选项卡1中上载照片时,我看到上载的照片,但当我转到选项卡2时,没有上载的照片。我必须刷新页面才能看到它

所以我试着用这种方式来解决这个问题:

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
}
希望这对你有帮助