Ajax reloading - bid script

Discussion in 'JavaScript' started by G3n3s!s, Jan 29, 2011.

  1. #1
    Hey i am not great at ajax but I would like to get some help

    got this

    function ajax(nastaveni) {
        // Naèteme nastavení nebo uložíme výchozí.
        nastaveni = {
            // Typ HTTP požadavku
            typ: nastaveni.typ || "",
    
            // URL, na kterou bude požadavek proveden
            url: nastaveni.url || "",
    
            // Èasový limit dokonèení požadavku
            timeout: nastaveni.timeout || 5000,
            
            // Funkce, které se zavolají pøi selhání èi úspìchu požadavku
            // nebo pøi jeho dokonèení (a už úspìšném èi neúspìšném)
            onComplete: nastaveni.onComplete || function(){},
            onError: nastaveni.onError || function(){},
            onSuccess: nastaveni.onSuccess || function(){},
    
            // Typ dat, který bude vrácen ze serveru.
            // Výchozí  nastavení znamená, že typ bude urèen podle serveru
            // a podle toho se dále zachováme.
            data: nastaveni.data || ""
        };
        if ( typeof XMLHttpRequest == "undefined" ) {
    	XMLHttpRequest = function () {
    		return new ActiveXObject( navigator.userAgent.indexOf("MSIE 5") >= 0 ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP" );
    	}
        }
    
        // Vytvoøíme objekt požadavku.
        var xml = new XMLHttpRequest();
    
        // Otevøeme asynchronní požadavek typu GET.
        xml.open("GET", nastaveni.url, true);
    
        // Pamatujeme si, jestli byl požadavek úspìšnì dokonèen.
        var pozadavekDokoncen = false;
    
        // Inicializujeme callback funkci, která se spustí za pìt sekund
        // a zruší požadavek (pokud se tak již nestalo).
        setTimeout(function(){
             pozadavekDokoncen = true;
        }, nastaveni.timeout);
    
        // Hlídáme zmìny stavu požadavku.
        xml.onreadystatechange = function(){
            // Èekáme na kompletní naètení dat,
            // a ujistíme se, že èasový limit požadavku ještì nevypršel.
            if ( xml.readyState == 4 && !pozadavekDokoncen ) {
    
                // Zkontrolujeme, zda byl požadavek úspìšný
                if ( httpSuccess( xml ) ) {
    
                    // Zavoláme callback funkci pro úspìšné provedení požadavku
                    // s daty vrácenými ze serveru.
                    nastaveni.onSuccess( httpData( xml, nastaveni.typ ) );
    
                // Jinak nastala chyba, zavoláme tedy callback funkci pro chybový stav.
                } else {
                    nastaveni.onError();
                }
    
                // Zavoláme callback funkci pro dokonèení požadavku.
                nastaveni.onComplete();
    
                // Uklidíme po sobì, abychom pøedešli úniku pamìti.
                xml = null;
            }
        };
    
        // Navážeme spojení se serverem.
        xml.send(null);
        
        // Zjistíme, zda HTTP požadavek uspìl.
        function httpSuccess(r) {
            try {
                // Pokud nebyl vrácen žádný stav a žádáme o místní soubor,
                // pak byl požadavek úspìšný.
                return !r.status && location.protocol == "file:" ||
        
                    // Jakýkoliv status od 200 do 299 je dobrý.
                    ( r.status >= 200 && r.status < 300 ) ||
        
                    // Úspìšnì dokonèeno, pokud dokument nebyl zmìnìn.
                    r.status == 304 ||
        
                    // Prohlížeè Safari vrací prázdný satus, pokud soubor nebyl zmìnìn.
                    navigator.userAgent.indexOf("Safari") >= 0 && typeof r.status == "undefined";
            } catch(e){}
        
            // Pokud kontrola stavu vyhodila výjimku, pøedpokládáme, že požadavek také neuspìl.
            return false;
        }
    
        // Získáme správná data z HTTP odpovìdi.
        function httpData(r,typ) {
            // Získáme hlavièku Content-Type.
            var ct = r.getResponseHeader("Content-Type");
        
            // Pokud nebyl urèen výchozí typ, zjistíme, zda server vrátil
            // nìjaký druh XML.
            var data = !typ && ct && ct.indexOf("xml") >= 0;
        
            // Pokud bylo ze serveru vráceno XML, získáme XML dokument;
            // jinak vrátíme textový obsah, který server poslal.
            data = typ == "xml" || data ? r.responseXML : r.responseText;
        
            // Pokud je udán typ "script", provedeme vrácený text jako JavaScript.
            if ( typ == "script" )
                eval.call( window, data );
        
            // Vrátíme data z odpovìdi (buï XML dokument, nebo textový øetìzec).
            return data;
        }
    }
    
    
    
    function countDown(timeto,id)
    {
    	if (timeto < 1)
    	{
    		//ajaxref(
    		document.getElementById(id).innerHTML = 'ssupa';
    		timeto = 6;
    		ajax({typ: 'HTML',url: 'getupdate.php?id='+id, onSuccess: function(html) {var xx=document.getElementById(id); xx.innerHTML = html; }});
    		//document.location.reload();	
    	}
    	else
    	{
    	    var h = 0;
    		var m = 0;
    		var s = 0;
    	
    	
    		if (timeto>3559){h=parseInt(timeto/3600);}
    		var bh = timeto-(h*3600);
    		if (bh>59) {m=parseInt(bh/60);}
    		var bm = timeto - (h*3600) - (m*60);
    		s=bm;
    		if (h<10) {h = '0'+h;}
    		if (m<10) {m = '0'+m;}
    		if (s<10) {s = '0'+s;}
    		var out = h+':'+m+':'+s;
    		document.getElementById(id).innerHTML=out;
    	}
    }
    
    function countdown(timenow,id)
    {
    	if (timenow < 1)
    	{
    	    document.getElementById(id).innerHTML = 'test';
    	    timeto = 6;
    	    ajax({typ: 'HTML',url: 'getupdate.php?id='+id, onSuccess: function(html) {var xx=document.getElementById(id); xx.innerHTML = html; }});
    	}
    	else{countDown(timenow,id);	var timenow = timenow-1;
    	to = setTimeout("countdown("+timenow+",'"+id+"')",1000);   	}
    
    }
    PHP:
    & I am calling it with
    <script>countdown(100,'counter');</script>
    PHP:
    Okay, countdowning works. My problem is after when 'timenow' reaches 0. I need to call file & reload countdown(100,'counter'); function but it ignores it when ajax add "read" that function call.

    Its for bidding script. Can someone help me ?
     
    G3n3s!s, Jan 29, 2011 IP
  2. mastermunj

    mastermunj Well-Known Member

    Messages:
    687
    Likes Received:
    13
    Best Answers:
    0
    Trophy Points:
    110
    #2
    I am not so sure, but following should help:

    
    function countdown(timenow,id)
    {
        if (timenow < 1)
        {
            document.getElementById(id).innerHTML = 'test';
            timeto = 6;
            ajax({typ: 'HTML',url: 'getupdate.php?id='+id, onSuccess: function(html) {var xx=document.getElementById(id); xx.innerHTML = html; }});
            to = setTimeout("countdown("+100+",'"+id+"')",1000);
        }
        else
        {
            countDown(timenow,id);
            var timenow = timenow-1;
            to = setTimeout("countdown("+timenow+",'"+id+"')",1000);
        }
    
    }
    
    Code (markup):
     
    mastermunj, Feb 3, 2011 IP