View Single Post
Old 05-21-2009, 10:15 PM   #5 (permalink)
sketchMedia
The Prestige
Advanced Programmer Top Contributor Good Samaritan 
 
sketchMedia's Avatar
 
Join Date: Oct 2007
Location: Manchester, UK
Posts: 854
Thanks: 32
sketchMedia is on a distinguished road
Default

GIANT FUDGE INCOMING!

Quickly hacked this together (yes its probably over engineered, but I got carried away), seems to work!
javascript Code:
periodicUpdater = function(){
        //private
        XMLHttp = false;
        XMLHttpFactories = [
            function () {return new XMLHttpRequest()},
            function () {return new ActiveXObject("Msxml2.XMLHTTP")},
            function () {return new ActiveXObject("Msxml3.XMLHTTP")},
            function () {return new ActiveXObject("Microsoft.XMLHTTP")}
        ];
        function factory() {
            if(XMLHttp) { return XMLHttp; }
            for (var i=0;i<XMLHttpFactories.length;++i) {
                try {
                    XMLHttp = XMLHttpFactories[i]();
                }
                catch (e) {
                    continue;
                }
                break;
            }
            return XMLHttp;
        };
        function handleResponse(XMLHttp, element, callback) {
            e = document.getElementById(element);
           
            if (XMLHttp.readyState != 4) { return; }
            if (XMLHttp.status != 200 && XMLHttp.status != 304) {
                alert('ARGH!!! Error: ' + XMLHttp.status);
                return;
            }
            callback(XMLHttp, e);
        };
        function send(url, element, callback) {
            XMLHttp = factory();
            XMLHttp.open('GET', url, true);
            XMLHttp.setRequestHeader('User-Agent','XMLHTTP/1.0');
            XMLHttp.onreadystatechange = function () { handleResponse(XMLHttp, element, callback); };
            if (XMLHttp.readyState == 4) { return; }
            XMLHttp.send(null);
        }
        //public
        return {
            interval : false,
            start : function(url, element, time, callback) {
                send(url, element, callback);
                interval = setInterval(function(){send(url, element, callback)}, time);
            },
            stop : function() {
                clearInterval(interval);
            }
        }
    }();
    periodicUpdater.start('fileStat.php', 'file', 10000, function(req, e) {
        e.innerHTML = req.responseText;
    });
    //periodicUpdater.stop(); use this to stop
 
try that.
__________________
mysql> SELECT * FROM `users` WHERE `users`.`clue` > 0;
Empty set (0.00 sec)

Last edited by sketchMedia : 05-21-2009 at 10:16 PM. Reason: removed some cruft
sketchMedia is offline  
Reply With Quote