进度回调总是在jquery-file-upload插件中显示100%上传

Chr*_*ris 12 javascript jquery file-upload jquery-plugins

我想为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");
    }
  });
Run Code Online (Sandbox Code Playgroud)

几秒钟后(上传完成时)完成回调,我可以通过服务器日志确认上传成功.当我尝试使用progressall回调时,我也会遇到相同的行为.

不确定它是否相关,但我目前不包括jquery.fileupload-fp.js库,因为添加它可以防止任何上传活动发生.

知道我做错了什么吗?

Luk*_*uke -1

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

无论如何,您应该将progress函数更改为

alert( data.loaded / data.total ); // no quotes, no +'s
Run Code Online (Sandbox Code Playgroud)

如果这些属性(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
Run Code Online (Sandbox Code Playgroud)

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