AJAX 2x aanroepen op een pagina
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);'.
heeft iemand idee hoe ik dit op kan lossen?
alvast hartelijk bedankt!
adriaan
de files:
ajax_request.php
ajax_request2.php
ajax_view.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!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='ajax.js' type='text/javascript'></script>
<script type='text/javascript'>
window.onload = function() {
runajax('ajax_request.php', 'ajax_content');
runajax('ajax_request2.php', 'ajax_content2');
}
</script>
</head>
<body>
<div id='ajax_content'>date</div>
<hr />
<div id='ajax_content2'>seconden</div>
</body>
</html>
'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='ajax.js' type='text/javascript'></script>
<script type='text/javascript'>
window.onload = function() {
runajax('ajax_request.php', 'ajax_content');
runajax('ajax_request2.php', 'ajax_content2');
}
</script>
</head>
<body>
<div id='ajax_content'>date</div>
<hr />
<div id='ajax_content2'>seconden</div>
</body>
</html>
ajax.js
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var xmlHttp
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null) {
alert ("Your browser does not support AJAX!");
}
function runajax(page, element) {
xmlHttp.onreadystatechange=function(){
if (xmlHttp.readyState==4) {
document.getElementById(element).innerHTML=xmlHttp.responseText;
}
}
xmlHttp.open("GET",page+"?randomtime="+Math.random(),true);
xmlHttp.send(null);
window.setTimeout(function(){runajax(page,element)}, 1000);
}
function GetXmlHttpObject() {
var xmlHttp=null;
try {
xmlHttp=new XMLHttpRequest();
}
catch (e) {
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null) {
alert ("Your browser does not support AJAX!");
}
function runajax(page, element) {
xmlHttp.onreadystatechange=function(){
if (xmlHttp.readyState==4) {
document.getElementById(element).innerHTML=xmlHttp.responseText;
}
}
xmlHttp.open("GET",page+"?randomtime="+Math.random(),true);
xmlHttp.send(null);
window.setTimeout(function(){runajax(page,element)}, 1000);
}
function GetXmlHttpObject() {
var xmlHttp=null;
try {
xmlHttp=new XMLHttpRequest();
}
catch (e) {
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
Gewijzigd op 01/01/1970 01:00:00 door Adriaan
verander in je ajax.js
regel 15 :
window.setTimeout(function(){runajax(page,element)}, 1000);
vervangen voor :
window.setTimeout("runajax('"+ page + "','"+ element+ "');",1000);
Groetjes,
René
helaas is dat niet de oplossing
Ik raad je aan een Library te gebruiken, die hebben zulke dingen al helemaal ingebakken, scheelt je meestal een hoop tijd :)
Een paar libraries:
jQuery
Prototype
MooTools
YUI
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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/* 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();
}
/* 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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!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
GoodLuck...
René
Gewijzigd op 01/01/1970 01:00:00 door Rene Sn
bedankt voor de moeite!
groetjes,
adriaan
Adriaan schreef op 29.03.2009 17:03:
@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
Maar goed ben blij dat 't werkt :-)
Grts. René
Leuk :-) ... Leuke site trouwens, (je hebt wel wat javaErrors')
Dat met die postcode is ook leuk :-) ben ooit eens begonnen om van een telefoonboek alle adressen te exporteren pffffffff :P
zo'n dbase met al die postcode/adres/woonplaats wil ik nog hebben :)
dump um maar niet hier da's beetje groot...
Grts. René