进度回调总是在jquery-file-upload插件中显示100%上传
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进度回调总是在jquery-file-upload插件中显示100%上传相关的知识,希望对你有一定的参考价值。
我想为blueimp jquery-file-upload插件实现一个进度条,但progress
回调只在上传开始后立即触发,并且data.loaded == data.total。
<input data-url="/ads/32/photos" id="image" name="image" type="file" />
$(".upload-btn input").fileupload({
dataType: "json",
progress: function(e, data) {
alert(data.loaded + "/" + data.total);
},
done: function(e, data) {
alert("done");
}
});
几秒钟后(上传完成时)完成回调,我可以通过服务器日志确认上传成功。当我尝试使用progressall
回调时,我也会遇到相同的行为。
不确定它是否相关,但我目前不包括jquery.fileupload-fp.js库,因为添加它可以防止任何上传活动发生。
知道我做错了什么吗?
答案
进度函数alert
ing字符串“100%”?我不熟悉这个插件,但alert
中progress
函数的表达式将所有内容都转换为String
类型。所以我希望它显示字符串“x / y”。
在任何情况下,您应该将progress
函数更改为
alert( data.loaded / data.total ); // no quotes, no +'s
如果这些属性(total
和loaded
)是正确的,那么它应该给你你想要的行为。
编辑:为了澄清发生了什么,如果这回答了你的问题:+
运算符根据其操作数的数据类型以不同的方式运行。如果你将+
两个数字放在一起,它就可以作为算术加法运算符。如果其中一个运算符是字符串,则+
将首先将其他操作数更改为字符串,然后将它们连接起来。最终结果将是一个字符串,而不是一个数字。
var two = "2"; // two is a String data type
alert(two + 2); // Returns "22" as a String
var two = 2;
alert(two + 2); // Returns 4
以上是关于进度回调总是在jquery-file-upload插件中显示100%上传的主要内容,如果未能解决你的问题,请参考以下文章