2012-09-13 32 views
8

Tôi muốn triển khai thanh tiến trình cho plugin jquery-file-upload của blueimp nhưng cuộc gọi lại progress chỉ được kích hoạt ngay sau khi bắt đầu tải lên và dữ liệu. load == data.total.gọi lại tiến trình luôn hiển thị tải lên 100% trong plugin jquery-file-upload

<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"); 
    } 
    }); 

Giây sau (khi tải lên hoàn tất) cuộc gọi lại được thực hiện và tôi có thể xác nhận qua nhật ký máy chủ tải lên thành công. Tôi cũng nhận được hành vi tương tự khi tôi cố gắng sử dụng gọi lại progressall.

Không chắc chắn nếu nó có liên quan, nhưng tôi hiện không bao gồm thư viện jquery.fileupload-fp.js kể từ khi thêm vào đó ngăn chặn bất kỳ hoạt động tải lên nào xảy ra như vậy.

Bất kỳ ý tưởng nào tôi đang làm sai?

+1

hey @ Chris, là bạn có thể khắc phục vấn đề này? Tôi đang phải đối mặt với vấn đề tương tự. – varunvlalan

Trả lời

-1

Chức năng tiến trình alert có nhập chuỗi "100%" không? Tôi không quen với plugin nhưng biểu thức trong alert cho hàm progress sẽ chuyển mọi thứ thành loại String. Vì vậy, tôi hy vọng rằng nó sẽ hiển thị chuỗi "x/y".

Trong mọi trường hợp bạn nên thay đổi progress chức năng để

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

Nếu những thuộc tính (totalloaded) là chính xác, sau đó nó sẽ cho bạn những hành vi mà bạn muốn.

Chỉnh sửa: Để làm rõ điều gì đang xảy ra, nếu điều này trả lời câu hỏi của bạn: toán tử + hoạt động theo các cách khác nhau tùy theo loại dữ liệu của toán hạng. Nếu bạn + hai số cùng nhau, nó hoạt động như một toán tử cộng số học. Nếu thậm chí một của toán tử là một chuỗi, thì + trước tiên sẽ thay đổi các toán hạng khác thành chuỗi đầu tiên và sau đó ghép nối chúng. Kết quả cuối cùng sẽ là một chuỗi, không phải là một số.

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

Các vấn đề liên quan