graag wil ik de functie 'runajax' gebruiken om meerder elementen op de website up-to-date te houden door middel van ajax. helaas werkt het niet als ik twee maal de functie 'runajax' aanroep. waarschijnlijk komt die omdat de functie eindigt met 'window.setTimeout(function(){runajax(page,element)}, 1000);'.
verander in je ajax.js
regel 15 :
window.setTimeout(function(){runajax(page,element)}, 1000);
vervangen voor :
window.setTimeout("runajax('"+ page + "','"+ element+ "');",1000);
Als ik het goed begrijp, ligt het inderdaad aan de setTimeout. Die wordt elke keer overschreven. Je kan hiervoor een soort wrapper gebruiken.
Ik raad je aan een Library te gebruiken, die hebben zulke dingen al helemaal ingebakken, scheelt je meestal een hoop tijd :)
Ik had het zelfde probleem effe niet goed opgelet,
voor mezelf heb ik destijds xmlhttp gedeelte gecopieerd, in xhtml1 en 2.
Maar dat was best wel lelijk.
Heb er maar effe een objectje van gemaakt :) Was effe puzzelen. maar het werkt prima ;-)
new_ajax.js
/* nAjax v0.01rs*/
/* Gebruik : var ajax1 = new new_Ajax();
/* ajax1.run("timer.php","id_naam"); */
function nAjax() {
this.xmlhttp = null;
this.element="";
this.page="";
var self="";
this.initnAjax=function() {
try {
this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e1) {
try {
this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
this.xmlhttp = null;
}
}
if (! this.xmlhttp) {
if (typeof XMLHttpRequest != "undefined") {
this.xmlhttp = new XMLHttpRequest();
} else {
this.failed = true;
}
}
};
this.run=function (page,element) {
self = this;
if (this.xmlhttp) {
if (self.xmlhttp.readyState >= 1 && self.xmlhttp.readyState <= 3) { self.xmlhttp.abort();}
this.now = new Date();
this.xmlhttp.open("GET", page + "?t=" + this.now.getTime(), true);
this.xmlhttp.onreadystatechange = function () {
if(self.xmlhttp.readyState == 4){
document.getElementById(element).innerHTML = self.xmlhttp.responseText;
}
}
this.xmlhttp.send(null);
}
}
this.initnAjax();
}
new_ajax.php
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML Basic 1.1//EN' 'http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='nl'>
<html>
<head>
<title></title>
<link rel='stylesheet' href='/common/style.css' type='text/css' />
<script src='new_ajax.js' type='text/javascript'></script>
<script type='text/javascript'>
/*
per ajax die je gebruiken wilt (tegelijk) moet je een aanmaken.
*/
var ajax1 = new nAjax();
var ajax2 = new nAjax();
/* ------------ */
function do_update() {
ajax1.run('ajax_request.php', 'ajax_content');
ajax2.run('ajax_request2.php', 'ajax_content2');
window.setTimeout("do_update()",2000);
}
window.onload = do_update() ;
</script>
</head>
<body>
<div id='ajax_content'>date</div>
<hr />
<div id='ajax_content2'>seconden</div>
</body>
</html>
Heb 't hier Getest, en werkt prima :-)
EDIT: Effe een note.. Ik hoop dat je het op een prive server gebruikt, zodat je de logfunctie uit kunt zetten want als je dit remote doet en dan met 1000 msec, dan groeid je access.log als KOOL ;-) .. in een test opstelling had ik net 20 van die div's gemaakt. En ben effe 3 uurtjes weggeweest AHUM :P
@rené: thanx, het werkt perfect! en idd, die access.log groeit als kool, hij is 17mb :p zelfs m'n editor heeft moeite zulke bestanden te showen. misschien de access.log wat vaker legen of gewoon uitzetten.
@rené: thanx, het werkt perfect! en idd, die access.log groeit als kool, hij is 17mb :p zelfs m'n editor heeft moeite zulke bestanden te showen. misschien de access.log wat vaker legen of gewoon uitzetten.
Your Welcome, Ik heb nu meteen dat verhaal bij me eigen ook toegepast, Scheelt een stuk rommelige java.js :)
xhtml1,xhtml2,xhtml3,xhtml4...... + aanverwante functions's :)
Gebruik notepad++ , werkt prima :) mijn access.log is gemiddeld 400mb ofzo :D