AJAX probleem (Opgelost)
juul - 19/07/2007 21:07 (laatste wijziging 19/07/2007 21:09)
HTML interesse
Ik heb deze code samengesteld aan de hand van een tutorial hier op de site.
function createRequestObject()
{
var req;
if(window.XMLHttpRequest)
{
req = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
req = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
alert('Problem creating the XMLHttpRequest object!');
}
return req;
}
var http = createRequestObject();
function sendRequestServer(id, ip, port)
{
http.open('get', './sources/servers_ajax.php?id='+id+'&random='+Math.random());
http.onreadystatechange = handleResponseServer(ip, port);
http.send(null);
}
function handleResponseServer(ip, port)
{
if(http.readyState == 4 && http.status == 200)
{
if(http.responseText)
{
document.getElementById("server_"+ip+"_"+port).innerHTML = http.responseText;
}
else
{
document.getElementById("server_"+ip+"_"+port).innerHTML = 'Error';
}
}
else
{
document.getElementById("server_"+ip+"_"+port).innerHTML = '<img src="./images/load.gif" alt="Laden..." />';
}
}
function createRequestObject( )
{
var req;
if ( window.XMLHttpRequest )
{
req = new XMLHttpRequest( ) ;
}
else if ( window.ActiveXObject )
{
req = new ActiveXObject( "Microsoft.XMLHTTP" ) ;
}
else
{
alert ( 'Problem creating the XMLHttpRequest object!' ) ;
}
return req;
}
var http = createRequestObject( ) ;
function sendRequestServer( id, ip, port)
{
http.open ( 'get' , './sources/servers_ajax.php?id=' + id+ '&random=' + Math.random ( ) ) ;
http.onreadystatechange = handleResponseServer( ip, port) ;
http.send ( null ) ;
}
function handleResponseServer( ip, port)
{
if ( http.readyState == 4 && http.status == 200 )
{
if ( http.responseText )
{
document.getElementById ( "server_" + ip+ "_" + port) .innerHTML = http.responseText ;
}
else
{
document.getElementById ( "server_" + ip+ "_" + port) .innerHTML = 'Error' ;
}
}
else
{
document.getElementById ( "server_" + ip+ "_" + port) .innerHTML = '<img src="./images/load.gif" alt="Laden..." />' ;
}
}
Maar altijd wordt de eerste else van de functie handleResponseServer uitgevoerd. Dus hij ontvangt de info van de pagina blijkbaar niet terwijl dat echt wel zou moeten. Ik had hem eerst werkend maar als ik dan de variablen aan het id ging toevoegen ("server_"+ip+"_"+port) ipv ("server") dan werkte het niet meer.
22 antwoorden
Gesponsorde links
marten - 19/07/2007 21:13 (laatste wijziging 19/07/2007 21:13)
Beheerder
Je moet vooraf de string maken die je wilt dus eerst
var i = eval('server_'+ip+'_'+port);
var i = eval ( 'server_' + ip+ '_' + port) ;
en dan in je functie gebruik je var i
juul - 19/07/2007 22:53
HTML interesse
Bedankt voor de hulp ik krijg wel deze error in de foutconsole en hij voert gewoon niets uit.
Regel31:
var divname = eval('server_'+ip+'_'+port);
var divname
= eval ( 'server_' + ip
+ '_' + port
) ;
En ip is een ip en port een port. Wat moet ik eraan veranderen?
marten - 19/07/2007 22:56
Beheerder
Post je nieuwe ajax.js eens
juul - 19/07/2007 22:57
HTML interesse
function createRequestObject()
{
var req;
if(window.XMLHttpRequest)
{
req = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
req = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
alert('Problem creating the XMLHttpRequest object!');
}
return req;
}
var http = createRequestObject();
function sendRequestServer(id, ip, port)
{
http.open('get', './sources/servers_ajax.php?id='+id+'&random='+Math.random());
http.onreadystatechange = handleResponseServer(ip, port);
http.send(null);
}
function handleResponseServer(ip, port)
{
var divname = eval('server_'+ip+'_'+port);
if(http.readyState == 4 && http.status == 200)
{
if(http.responseText)
{
document.getElementById(divname).innerHTML = http.responseText;
}
else
{
document.getElementById(divname).innerHTML = 'Error';
}
}
else
{
document.getElementById(divname).innerHTML = '<img src="./images/load.gif" alt="Laden..." />';
}
}
function createRequestObject( )
{
var req;
if ( window.XMLHttpRequest )
{
req = new XMLHttpRequest( ) ;
}
else if ( window.ActiveXObject )
{
req = new ActiveXObject( "Microsoft.XMLHTTP" ) ;
}
else
{
alert ( 'Problem creating the XMLHttpRequest object!' ) ;
}
return req;
}
var http = createRequestObject( ) ;
function sendRequestServer( id, ip, port)
{
http.open ( 'get' , './sources/servers_ajax.php?id=' + id+ '&random=' + Math.random ( ) ) ;
http.onreadystatechange = handleResponseServer( ip, port) ;
http.send ( null ) ;
}
function handleResponseServer( ip, port)
{
var divname = eval ( 'server_' + ip+ '_' + port) ;
if ( http.readyState == 4 && http.status == 200 )
{
if ( http.responseText )
{
document.getElementById ( divname) .innerHTML = http.responseText ;
}
else
{
document.getElementById ( divname) .innerHTML = 'Error' ;
}
}
else
{
document.getElementById ( divname) .innerHTML = '<img src="./images/load.gif" alt="Laden..." />' ;
}
}
marten - 19/07/2007 23:13
Beheerder
Doe eens een alert van divname. Wat zie je dan? En is er een element met het id <divname> ?
marten - 20/07/2007 09:47
Beheerder
Snap je de JS zelf wel?
document.getElementById(divname).innerHTML =
document.getElementById ( divname) .innerHTML =
Deze code zet de resultaat van Ajax in het element met het id <divname>
Als je dus een server,ip,port hebt als server_127.0.0.1_22000 gaat de code dus zoeken naar een div, td of ander element met de naam server_127.0.0.1_22000
willemw - 20/07/2007 11:00
Nieuw lid
juul schreef:
Dat is de bedoeling ik heb een element met het id <div id="server_ip_port">
var divname = eval('server_'+ip+'_'+port);
var divname = eval ( 'server_' + ip+ '_' + port) ;
gaat niet "server_ip_port" geven maar eerder iets zoals "server_127.0.0.1_80"
marten - 20/07/2007 11:29 (laatste wijziging 20/07/2007 11:30)
Beheerder
Citaat:
Dat is de bedoeling ik heb een element met het id <div id="server_ip_port">
Dan zou je dus
var divname = 'server_ip_port';
var divname = 'server_ip_port' ;
moeten gebruiken
willemw - 20/07/2007 14:22
Nieuw lid
ok ik kan officieel niet meer volgen. kan je anders eens de bijhorende htmlcode posten of zo?
willemw - 20/07/2007 14:49
Nieuw lid
aha
volgens mij moet je die eval() laten vallen:
function handleResponseServer(ip, port)
{
var divname ='server_'+ip+'_'+port;
alert(divname);
...
function handleResponseServer( ip, port)
{
var divname = 'server_' + ip+ '_' + port;
alert ( divname) ;
...
waarom wil je daar eval() gebruiken trouwens?
willemw - 20/07/2007 15:42
Nieuw lid
regel 25:
http.onreadystatechange = handleResponseServer(ip, port)
http.onreadystatechange = handleResponseServer( ip, port)
die ip en port kan je zo niet meegeven, je moet ze in een globale var steken
juul - 20/07/2007 16:04
HTML interesse
Hoe doe ik dat?
willemw - 20/07/2007 16:06
Nieuw lid
door een tutorial te lezen en zelf ook een beetje moeite te doen?
tip: var http = createRequestObject(); is een globale variabele
juul - 20/07/2007 16:10 (laatste wijziging 20/07/2007 16:10)
HTML interesse
function sendRequestServer(id, ip, port)
{
var ip = ip;
var port = port;
http.open('get', '../sources/servers_ajax.php?id='+id+'&random='+Math.random());
http.onreadystatechange = handleResponseServer;
http.send(null);
}
function handleResponseServer ()
{
var divname = 'server_'+ip+'_'+port;
if(http.readyState == 4 && http.status == 200)
{
if(http.responseText)
{
document.getElementById(divname).innerHTML = http.responseText;
}
else
{
document.getElementById(divname).innerHTML = 'Error';
}
}
else
{
document.getElementById(divname).innerHTML = '<img src="./template/images/load.gif" alt="Laden..." />';
}
}
function sendRequestServer( id, ip, port)
{
var ip = ip;
var port = port;
http. open( 'get' , '../sources/servers_ajax.php?id=' + id+ '&random=' + Math. random( ) ) ;
http. onreadystatechange = handleResponseServer;
http. send( null ) ;
}
function handleResponseServer ( )
{
var divname = 'server_' + ip+ '_' + port;
if ( http. readyState == 4 && http. status == 200 )
{
if ( http. responseText)
{
document. getElementById( divname) . innerHTML = http. responseText;
}
else
{
document. getElementById( divname) . innerHTML = 'Error' ;
}
}
else
{
document. getElementById( divname) . innerHTML = '<img src="./template/images/load.gif" alt="Laden..." />' ;
}
}
Dat heb ik nu maar het werkt nog niet Ik krijg de melding dat ip niet gedefinieerd is...
willemw - 20/07/2007 16:11
Nieuw lid
bijna
function sendRequestServer(id, ip, port)
{
var ip = ip;
var port = port;
function sendRequestServer( id, ip, port)
{
var ip = ip;
var port = port;
nu zijn ip en port enkel gedefinieerd binnen sendRequestServer. Dat is NIET wat je wil
je moet eerder dit doen:
var ip;
var port;
function sendRequestServer(id, ip, port)
{
ip = ip;
port = port;
var ip;
var port;
function sendRequestServer( id, ip, port)
{
ip = ip;
port = port;
juul - 20/07/2007 16:17
HTML interesse
Oke dat had ik ook juist gevonden in iedergeval zeer hard bedankt het begint nu te werken buiten nog wat bugs maar daar zoek ik zelf wel op.
Alleen zou je misschien een betere manier weten dan onder elke div de volgende code te laten zetten:
<script>
var ip = '{ip}';
var port = {port};
</script>
< script>
var ip = '{ip}' ;
var port = { port} ;
</script>
Want dan krijg je lelijke code met
<div></div>
<script></script>
<div></div>
<script></script>
Gesponsorde links
Dit onderwerp is gesloten .