2012-09-13 11 views
8

Chcę zaimplementować pasek postępu wtyczki do przesyłania jquery blueimp, ale wywołanie zwrotne progress jest uruchamiane tylko raz zaraz po rozpoczęciu wysyłania i danych. załadowany == data.total.progress callback zawsze pokazuje 100% upload do wtyczki 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"); 
    } 
    }); 

Po kilku sekundach (po zakończeniu przesyłania) wykonano wywołanie zwrotne i mogę potwierdzić za pomocą dzienników serwera, że ​​przesyłanie zakończyło się powodzeniem. Podobne zachowanie występuje również przy próbie użycia wywołania zwrotnego progressall.

Nie jestem pewien, czy jest to powiązane, ale obecnie nie włączam biblioteki jquery.fileupload-fp.js od dodania, która zapobiega działaniom związanym z przesyłaniem.

Każdy pomysł, co robię źle?

+1

hej @chris, udało ci się rozwiązać ten problem? Mam do czynienia z tym samym problemem. – varunvlalan

Odpowiedz

-1

Czy funkcja postępu alert ciąg "100%"? Nie jestem obeznany z wtyczką, ale wyrażenie w postaci alert dla funkcji progress rzuca wszystko na typ String. Tak więc oczekiwałbym, że pokazuje ciąg "x/y".

W każdym przypadku należy zmienić funkcję progress do

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

Jeśli te atrybuty (total i loaded) są poprawne, to powinno dać żądane zachowanie.

Edytuj: Aby wyjaśnić, co się dzieje, jeśli odpowiedź na Twoje pytanie: operator + zachowuje się na różne sposoby w zależności od typu danych jego operandów. Jeśli masz dwie liczby razem, to działa jako arytmetyczny operator dodawania. Jeśli nawet jeden operatorów jest ciągiem znaków, + najpierw zmieni inne operandy na ciągi, a następnie połączą je z. Wynik końcowy będzie ciągiem, a nie liczbą.

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

Powiązane problemy