[python] sockety a Ajax

Filip Štědrosnký regnarg na seznam.cz
Sobota Listopad 17 07:33:13 CET 2007


Ajax znamené Asynchroní Javascript a Xml a v podstatě nespočívá v
ničem jiném, než že client-side skriptem můžu když je stránka načtená
posílat http požadavky, číst jejich odpovědi a na základě nich měnit 
stránku. Jednoduché použití by bylo třeba takové (předpokládá, že stránka
vrací obsah k zobrazení jako text/plain, s XML je to komplikovanější):

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Ajax Test</title>
<script type="application/x-javascript">
function send_xmlhttprequest(obsluha, method, url, content, headers)
//OWajax support function. Use under Public Domain
{
    if (window.XMLHttpRequest) {
        var xmlhttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        try {
            var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (eror) {
            var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    if (!xmlhttp) {
        return false;
    }
    xmlhttp.open(method, url);
    xmlhttp.onreadystatechange = function() {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                obsluha(xmlhttp, true);
            } else {
                obsluha(xmlhttp,false);
            }
       }
    };
    if (headers) {
        for (var key in headers) {
            xmlhttp.setRequestHeader(key, headers[key]);
        }
    }
    xmlhttp.send(content);
    return true;
}

function zpracuj(xh, ok) {
    if (ok) {
        document.getElementById("out").firstNode.nodeValue=xh.responseText;
    } else {
        alert("Chyba při zpracování požadavku");
    }
}

function refresh() {
    send_xmlhttprequest(zpracuj, "GET", "http://server/data.py");
    window.setTimeout("refresh();", 5000); //opakuj za 5s
}


</script>
<head>
<body>
<div id="out">Počkejte na načtení dat...</div>
</body>
</html>

On So, lis 17, 2007 at 07:07:59 +0100, Vladislav Lud�k wrote:
>    Pro pÅenos dat ze vzdáleného poÄÃtaÄe (teploty a stavy) a zpÄt na nÄj
>    (ÅÃdÃcà povely) použÃvám sockety pod Pythonem.
>    Vzdálený poÄÃtaÄ je Linuxový server.
>    Ovládánà a pÅenos dat funguje jak má i na klientské stanici.
>    PoužÃvám buÄ SSH a spouÅ¡tÃm skripty, nebo v Pythonu socketového
>    klienta.
>    Na serveru mám spuÅ¡tÄný i web se zobrazovánÃm a ovládánÃm v
>    Cherrypy.
>    Appache, PHP, MySQL, Postfix apod. mimochodem také.
>    A nynà můj dotaz:
>    Jak udÄlat zobrazovánà mÄnÃcÃch se hodnot na serveru plynule a
>    okamžitÄ i na webu klienta?
>    Po vygenerovánà stránky u klienta se už nedozvÃm o zmÄnách hodnot
>    na serveru.
>    MusÃm poslat žádost, nebo stránku obnovit.
>    Existuje metoda Ajax, která vytvoÅà vazbu mezi serverem a klientem
>    pomocà JavaScriptu.
>    NeumÃm ji ale prakticky využÃt.
>    UmÄl by mi nÄkdo poradit prakticky?
>    DÃk za váš Äas.
>    VL



Další informace o konferenci Python