Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

上传后再次上传遇到的问题 #6

Closed
DianWoung opened this issue Apr 14, 2017 · 7 comments
Closed

上传后再次上传遇到的问题 #6

DianWoung opened this issue Apr 14, 2017 · 7 comments
Labels

Comments

@DianWoung
Copy link

测试环境:laravel 5.3,window10环境,apache服务器,chrome浏览器最新版
当第一次上传时,运行正常,但当同样的表单二次上传时,会出现加载文件后无响应的问题,在刷新后又恢复正常。
详细测试如下:首次上传路径为:http://app.xxxx.com/admin/programs/3/edit(为本地项目的编辑功能,域名为本地域名),编辑其他项目或上传新建其他项目,如访问路径http://app.xxxx.com/admin/programs/1/edit,均无法响应。但在刷新后,运行正常。
注:无响应时,浏览器控制台无报错。

@peinhu
Copy link
Owner

peinhu commented Apr 14, 2017

@DianWoung 这个问题很奇怪,我用示例试了下无法重现你的问题,你换自带的示例试试呢?上传完第一次后,不刷新,重新打开一个示例页面上传。

@DianWoung
Copy link
Author

问题解决了,主要是你的js文件中,
$(function(){
AetherUpload.init();
});
是在加载时就执行了,我在静态文件中引用后,文件由于缓存,只能执行了一次,刷新之后才重新加载,我把这段代码放到每个需要的控制器里,每当访问控制器时再执行,就解决问题了

@peinhu
Copy link
Owner

peinhu commented Apr 14, 2017

@DianWoung 感谢上报,我看下怎么避免这个问题。

@peinhu peinhu added the bug label Apr 14, 2017
@peinhu
Copy link
Owner

peinhu commented Apr 21, 2017

@DianWoung 这两天抽空看了下这个问题,在我的试验中,例子里的js文件也是被缓存的,而且是状态200的前端缓存,但是初始化方法仍然执行了,所以我认为并不完全是由于缓存导致的。
猜测你应该是把js文件放到了head标签中,而不是像例子那样放到body末尾,浏览器对放在head和body中js文件的处理情况是不一样的,放在head中由于缓存的原因init()方法并未被执行,而放在body中即使该文件被缓存了init()方法也会执行。
可以试试把文件放到body末尾,应该就不会出现这种情况了。

@DianWoung
Copy link
Author

可能是我表述的测试框架不是很清晰吧,我用的的z-song的laravel-admin套件,将你的大文件上传包作为一个新增扩展整合到了这个项目中去,在其生成的代码中,js文件全部嵌在body末尾,这并没有问题。主要的问题,我想应该是ajax提交的问题,在首次加载提交之后,如create方法执行后,当前的路由并没有变化,页面只在局部刷新,当后面进行update方法时,因init方法已经在create方法执行时调用,所以页面就无法再次调用了,这也是为什么,我把启动脚本放到控制器里,调用时再执行,能正常运行的原因。其实这也是个不算bug的bug,就是具体项目具体使用的问题。

@DianWoung DianWoung reopened this Apr 21, 2017
@peinhu
Copy link
Owner

peinhu commented Apr 24, 2017

@DianWoung 我明白了,不是缓存的问题,你所使用的框架用了前端渲染或单页应用等类似技术进行局部刷新,页面并未全部重新加载,导致新的表单页面未执行AetherUpload.init()方法,进而导致文件上传的输入框没有绑定change事件,所以加载文件后无响应,这个确实是我考虑不周导致的问题。

@peinhu peinhu mentioned this issue Apr 27, 2017
@peinhu
Copy link
Owner

peinhu commented Apr 28, 2017

v1.0.1 release修复了此问题,所以我认为这个issue应该可以关闭了。

@peinhu peinhu closed this as completed Apr 28, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants