Rails 3.2:文件上传后jquery文件上传未刷新页面

时间:2012-06-19 18:41:21

标签: jquery ruby-on-rails-3 jquery-plugins file-upload

所以我有一个应用程序,我正在使用带有paperclip的jquery文件上传来动态地将文件添加到我的数据库中。一切正常,除了当我添加一个新文件(点击“开始上传”按钮后),页面没有刷新(但文件已正确插入数据库并发送到亚马逊s3)。

我检查了控制台并注意到,当我上传文件时,只有一个PUT请求,没有应该有的GET请求。

顺便说一句,我还有一个演示应用程序,它与我的真实应用程序具有相同的代码,它正在运行。我在演示应用程序中注意到,当您上传文件时,会有一个PUT请求,紧接着是GET请求。

所以我在不同的回调中发出警报,并发现“完成”功能存在问题。以下是“完成”的相关代码:

// Callback for successful uploads:
            done: function (e, data) { alert('done');
                var that = $(this).data('fileupload'),
                    template;
                if (data.context) { alert('done: if');
                    data.context.each(function (index) {
                        var file = ($.isArray(data.result) &&
                                data.result[index]) || {error: 'emptyResult'};
                        if (file.error) { alert('done: file.error');
                            that._adjustMaxNumberOfFiles(1);
                        }
                        that._transition($(this)).done(
                            function () { alert('done: function');
                                var node = $(this);
                                template = that._renderDownload([file])
                                    .css('height', node.height())
                                    .replaceAll(node);
                                that._forceReflow(template);
                                that._transition(template).done(
                                    function () { alert('done: function2');
                                        data.context = $(this);
                                        that._trigger('completed', e, data);
                                    }
                                );
                            }
                        );
                    });

在演示应用中,上面代码中的所有警报消息都会被点击。但是,在我的真实应用程序中,只有达到警报('done:if')才会被击中。这意味着不会调用_renderDownload和_forceReflow,这会导致在重新加载页面之前不刷新文件列表。

同样如果这有帮助,我在演示应用程序和真实应用程序中添加了所有相关回调的警报,以确定是否未调用某些内容,我将列出每个调用的警报(注意:点击“开始上传”按钮后会调用这些警报:

演示应用

_startHandler
start
send
done
done: if statement
done: function 
_renderDownload
_forceReflow
done: function2
stop
stop2

真实应用

_startHandler
start
send
done
done: if
stop
stop2

0 个答案:

没有答案