【问题标题】:progress callback always shows 100% upload in jquery-file-upload plugin进度回调总是在 jquery-file-upload 插件中显示 100% 上传
【发布时间】:2012-09-06 22:23:23
【问题描述】:

我想为 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 库,因为添加它可以防止任何上传活动发生。

知道我做错了什么吗?

【问题讨论】:

标签: javascript jquery jquery-plugins file-upload


【解决方案1】:

进度函数alert是字符串“100%”吗?我对插件不熟悉,但alertprogress 函数的表达式将所有内容都转换为String 类型。所以我希望它显示字符串“x/y”。

在任何情况下,您都应该将progress 函数更改为

alert( data.loaded / data.total ); // no quotes, no +'s

如果这些属性(totalloaded)是正确的,那么它应该会给你你想要的行为。

编辑:澄清发生了什么,如果这回答了您的问题:+ 运算符根据其操作数的数据类型以不同的方式运行。如果您将+ 两个数字放在一起,则它可以用作算术加法运算符。如果甚至一个操作符是字符串,+会先把其他操作数先变成字符串,然后连接它们。最终结果将是一个字符串,而不是一个数字。

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

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Addition

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    相关资源
    最近更新 更多