valums Ajax上传无法在Safari上运行

时间:2011-12-13 07:13:59

标签: jquery

我正在使用valums Ajax上传来上传图片。我在同一页面上有多个上传按钮。在FF,Chrome,IE8和Opera上,一切都很完美。但是,在safari中没有任何反应,也没有上传文件。我正在使用ajaxupload.3.6.js,下面是我的代码 -

        button = $("#uplaodFile1");      
             new AjaxUpload(button, {
            action : '/business/upload_file1',
            name: 'uplaodFile1',
            autoSubmit: true,
            cache:false,
            onSubmit: function (file, ext) {

                if (!(ext && /^(jpg|gif|png)$/i.test(ext))) {
                    alert('Error: invalid file extension');
                    return false;
                }

            },
            onComplete: function (file, response) {
               if(response=="Sucess") {
                    alert(response + 'sucess');
                    }

                else {
                        alert(response);
                    }

            }
        });

有没有人面对这个。我尝试了所有的选项,比如添加元标记,搜索空的src属性和url属性,但没有什么可以帮助。

2 个答案:

答案 0 :(得分:1)

它与safari浏览器的已知问题。请检查此链接https://github.com/valums/file-uploader/issues/190.You可以尝试http://blueimp.github.com/jQuery-File-Upload/此插件具有良好的功能和文档

答案 1 :(得分:0)

这是一个老问题,但这仍然是一个非常烦人的Safari问题。请参阅Safari XHR upload stucks (sometimes)JQuery Ajax call often not working on Safari 6

好消息是:您可以构建Valums fileuploader.js中提供的链接中解释的建议解决方法:

如何?在插件qq.FileUploader的xhr.open之前的函数_upload中添加一个ajax调用,并在ajax的succes函数中包含所有代码,直到xhr.send:

$.ajax({
   async: false,
   url: your_closeconnection_script
})
.success(function(data){
   xhr.open(...
   ...
   xhr.send(file);
});

还有一件事:你需要在ajax调用之前创建一个'this'变量,并在success函数中替换所有次出现:

var $this = this;
$.ajax({
   async: false,
   url: your_closeconnection_script
})
.success(function(data){
   xhr.open(...
   ...
   if ($this._options.encoding == 'multipart'){
      ...
   }
   ...
   xhr.send(file);
});

Et voila:一个流畅的Valums插件!