Autor Zpráva
gekoncik
Profil
Ahoj,

na stránce chci udělat dynamicky se měnici menu přes ajax a chtěl bych udělat graf načítaní. V podstatě všechno mám vymyšlené kromě toho aby mi JS funkce vracela procenta z načtených dat.

Neexistuje nějaká metoda http request, která mi vráti procenta, nebo načtené baity a celkové baity?

Už jsem vytvořil takovou beta verzi podle http_request.readyState a switche:

do{
      switch(http_request.readyState){
        case 1:
          document.getElementById('d').innerHTML = "loading: 25%<hr />";
        break;

        case 2:
          document.getElementById('d').innerHTML = "loading: 50%<hr />";
        break;

        case 3:
          document.getElementById('d').innerHTML = "loading: 75%<hr />";
        break;

        case 4:
          document.getElementById('d').innerHTML = "loading: 100%<hr />";
        break;
      }
    } while (ttp_request.readyState < 3);


#D je objekt, ve kterém je status načítaní. Tento příklad ale skáče po 25%.


Vím že kategorie se budou generovat podle JS a to není dobré vůči vyhledávačů, ale mám to ošetřené jinak :)
Chamurappi
Profil
Reaguji na gekoncika:
Neexistuje nějaká metoda http request, která mi vráti procenta, nebo načtené baity a celkové baity?
Ne.

Ale existuje HTTP metoda HEAD, při které ti server pošle jen hlavičky a z hlavičky Content-Length (pokud je posílána) můžeš zjistit celkovou velikost. Samotný XMLHttpRequest ti umožňuje přidávat hlavičky požadavku pomocí metody setRequestHeader a protokol HTTP 1.1 dovoluje pomocí hlavičky Range stahovat jen vybranou část zdroje (což se užívá nejčastěji při přerušovaném stahování velkých věcí). Pokud tedy nevadí, že se pošle více požadavků na stejnou URI za sebou, a ta stahovaná data se natahují opravdu dlouho, můžeš je tahat po kouskách a při stažení každého kusu změnit ukazatel průběhu.

Mimochodem, <hr> se píše bez lomítka, pokud posíláš stránky s MIME typem „text/html“. Pak také „100%“ je stoprocentní, „100 %“ je sto procent. Ale to jsou jen kosmetické detaily.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0