Volgende probleem: op een site wordt een session countdown getoond en dmv. een klik kan de sessie tijd verlengt worden. Dit verloopt -mijn inziens- het best via AJAX: in de achtergrond worden de requests afgehandeld en uiteindelijk dient aan de client slechts alleen de nieuwe resterende sessietijd terug te worden gezonden.
Alhoewel de Prototype evalscript() functie goed werkt, gebruik ik deze library niet, omdat deze voor de rest niet gebruikt wordt en daarom eigenlijk te groot is voor deze site. De evalScript methode van AHAH vind ik zeer omslachtig: javascript via DOM in een element schrijven en daarna weer terughalen en dan evalueren. Dubbel werk, dat kan de boel niet sneller maken.
Dus mijn idee was om direct een XML pakket met JS te laten retourneren en vervolgens gelijk te evalueren zonder nieuwe elementen te moeten creeeren:
Dit is het XML pakket dat wordt terug gezonden:
Dit werkt ook goed, maar de -2- gebruikte xpaths bevallen mijn niet. Dar moet toch beter kunnen, of niet?! Of zouden jullie de de JS totaal anders laten evalueren?
Dank!
Alhoewel de Prototype evalscript() functie goed werkt, gebruik ik deze library niet, omdat deze voor de rest niet gebruikt wordt en daarom eigenlijk te groot is voor deze site. De evalScript methode van AHAH vind ik zeer omslachtig: javascript via DOM in een element schrijven en daarna weer terughalen en dan evalueren. Dubbel werk, dat kan de boel niet sneller maken.
Dus mijn idee was om direct een XML pakket met JS te laten retourneren en vervolgens gelijk te evalueren zonder nieuwe elementen te moeten creeeren:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| ...
if(xhr.readyState == 4 && xhr.status == 200) {
if(document.all)
scriptText = xhr.responseXML.getElementsByTagName("script-response")[0].firstChild.firstChild.xml;
else {
var xmlSerializer = new XMLSerializer()
scriptText = xmlSerializer.serializeToString(xhr.responseXML.getElementsByTagName("script-response")[0].childNodes[1].firstChild);
}
eval(scriptText);
}
... |
Dit is het XML pakket dat wordt terug gezonden:
code:
1
2
3
4
5
6
| <?xml version="1.0" encoding="ISO-8859-1" ?>
<script-response>
<script type="text/javascript">
endOfSession = new Date(<%= now.getTimeInMillis() %>);
</script>
</script-response> |
Dit werkt ook goed, maar de -2- gebruikte xpaths bevallen mijn niet. Dar moet toch beter kunnen, of niet?! Of zouden jullie de de JS totaal anders laten evalueren?
Dank!