Používam nasledujúci príkaz $ .axax na odovzdanie súboru z aplikácie PhoneGap:
function updateProgress( evt ) {
if ( evt.lengthComputable ) {
var percentComplete = evt.loaded / evt.total * 100;
console.log( percentComplete + "%" );
}
}
$.ajax({
url: url,
type: "POST",
data: data,
cache: false,
dataType: "json",
processData: false,
contentType: false,
success: successCallback,
error: errorCallback,
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.addEventListener( "progress", updateProgress, false);
return xhr;
}
});
Odovzdávanie funguje v poriadku. Udalosť postupu sa však po dokončení odovzdávania obnoví iba raz. Počas nahrania sa v skutočnosti nevzdáva - tak sa v skutočnosti nezobrazuje pokrok nahrávania. Počas nahrania je len pauza a potom sa zobrazí 100%.
Akékoľvek nápady, čo robím zle?
odpovede:
11 pre odpoveď č. 1Odovzdanie progress
udalosti sú vypálené xhr.upload
, takže pripojte poslucháča skôr, než xhr
, Tam sú tiež progress
udalosti na xhr
objekt, ale toto je pre odpoveď, ktorá sa vráti zo servera.
vidieť článok MDN pre viac detailov.
xhr.upload.addEventListener("progress", updateProgress, false)
(Vďaka A. Wolffovi a jeho poznámke k OP.)