J'ai donc finalement réussit ma première étape en utilisant bien du AJAX. Voilà ce que je fais mais c'est propre à mon code donc si quelqu'un tombe dessus et veut l'utiliser, il faut l'adapter:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
function loadBar(value){
var xhr = getXMLHttpRequest();
var loader = document.getElementById("lB"+value);
var file = document.getElementById("file"+value).href;
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
response = xhr.responseText;
loader.style.display = "none";
document.location.href=response;
}
else
loader.style.display = "inline";
}
if (file.indexOf('?') != -1)
file = file + "&ajax=True";
else
file = file + "?ajax=True";
xhr.open("GET",file,true);
xhr.setRequestHeader("Cache-Control","no-cache");
xhr.send(null);
} |
<a href="/get/{{ value }}" id="file{{ value }}" onclick="loadBar('{{ value }}');return false;">{{ value }}</a> <img src="/media/images/zoomloader.gif" alt="loading..." id="lB{{ value }}" style="vertical-align:middle;display:none;"/>
Maintenant pour la 2e étape, il faut que j'arrive à agir durant l'étape 3 en ajax et je sais pas vraiment si c'est faisable... Je peux faire une fonction côté serveur qui renvoit la taille du fichier qui est en train d'être chargé toutes les secondes mais je vois pas comment faire une 2e requête au serveur pendant cette étape 3...
Partager