login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Problemen met php AND ajax (Opgelost)

Offline stefan1987 - 21/05/2008 12:46 (laatste wijziging 21/05/2008 12:48)
Avatar van stefan1987Nieuw lid Hoi Allemaal,

Ik ben sinds een tijdje begonnen met het gebruiken van AJAX
voor het herladen van pagina's op mijn website (www.radiostereo.nl)
Maar ik zit met een paar problemen..
Eén hiervan is dat een php pagina met een alert erin wel zo werkt, maar niet wanneer ik deze pagina open met een AJAXherlaad script.

Test url's:
http://radiostereo.nl/Test/ajax.php
(deze pagina werkt dus niet)

http://radiostereo.nl/Test/alert.php
(terwijl deze pagina wel gewoon werkt)

Hebben jullie enig idee wat het probleem zou kunnen zijn?
Ik ben er al een paar dagen mee bezig maar ik vind geen oplossing..

Alvast bedankt

Groetjes Stefan

AJAXpagina

  1. <html>
  2. <head>
  3. <title>messages</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  5. <script>
  6. function createRequestObject() {
  7. var ro;
  8. var browser = navigator.appName;
  9. if(browser == "Microsoft Internet Explorer"){
  10. ro = new ActiveXObject("Microsoft.XMLHTTP");
  11. }else{
  12. ro = new XMLHttpRequest();
  13. }
  14. return ro;
  15. }
  16.  
  17. var http = createRequestObject();
  18.  
  19. function sndReq() {
  20. http.open('get', 'alert.php');
  21. http.onreadystatechange = handleResponse;
  22. http.send(null);
  23. setTimeout("sndReq()", 2000); // Recursive JavaScript function calls sndReq() every 2 seconds
  24. }
  25.  
  26. function handleResponse() {
  27. if(http.readyState == 4){
  28. var response = http.responseText;
  29. if (response != responseold || responsecheck != 1) {
  30. var responsecheck = 1;
  31. document.getElementById("messages").innerHTML = http.responseText;
  32. var responseold = response;
  33. }
  34. }
  35. }
  36.  
  37.  
  38. </script>
  39. </head>
  40. <body leftmargin="0" rightmargin="0" bottommargin="0" topmargin="3">
  41. <body onLoad="javascript:sndReq();">
  42. <div id="messages"></div>
  43. </body>
  44. </html>



Alertpagina

  1. <script language='JavaScript'>
  2. setTimeout("alert('Je hebt een nieuw bericht!')", 1000);
  3. </script>

6 antwoorden

Gesponsorde links
Offline Flex1986 - 21/05/2008 12:54
Avatar van Flex1986 Gouden medaille

Senior Member
Maak het jezelf makkelijk en maak gebruik van een standaard library zoals jQuery voor je Ajax gebeuren. jQuery heeft hele handige plugins zoals Timer deze werken (bijna) altijd en zijn ook nog eens cross browser te gebruiken.

Een tutorial over Ajax goed lezen en hier en daar zelf scripts maken is helemaal goed om de techniek te begrijpen. Als je het in real-life gaat gebruiken dan zijn kant en klare systemen een stuk makkelijker voor jezelf  
Offline saartje87 - 21/05/2008 14:21
Avatar van saartje87 Nieuw lid Ajax werkt niet zoals een iframe...

Met een request krijg je zeg maar plain text terug. Dus wat is de tag <script> dan? helemaal niks..

Je kan dit oplossen door alleen javascript terug te sturen, je haalt dus de script tags weg. Daarna bij je caalback functie zeg je:

eval( http.responseText );

Succes ;)
Offline stefan1987 - 21/05/2008 14:58 (laatste wijziging 21/05/2008 15:02)
Avatar van stefan1987 Nieuw lid
Flex1986 schreef:
Maak het jezelf makkelijk en maak gebruik van een standaard library zoals jQuery voor je Ajax gebeuren. jQuery heeft hele handige plugins zoals Timer deze werken (bijna) altijd en zijn ook nog eens cross browser te gebruiken.

Een tutorial over Ajax goed lezen en hier en daar zelf scripts maken is helemaal goed om de techniek te begrijpen. Als je het in real-life gaat gebruiken dan zijn kant en klare systemen een stuk makkelijker voor jezelf


Ik zal inderdaad binnenkort eens een tuturial gaan lezen over ajax
en me wat meer verdiepen in jQuery 

Bedankt voor de info!

saartje87 schreef:
Ajax werkt niet zoals een iframe...

Met een request krijg je zeg maar plain text terug. Dus wat is de tag <script> dan? helemaal niks..

Je kan dit oplossen door alleen javascript terug te sturen, je haalt dus de script tags weg. Daarna bij je caalback functie zeg je:

eval( http.responseText );

Succes ;)


Hey Thanks!

Ik denk ongeveer wel dat ik snap wat het probleem is..
Maar zou het voor mij even kunnen aanpassen?
of een voorbeeldje geven?

want ik heb dit ajax script ook zomaar gekopieerd
(ik kan het niet zelf schrijven)

Dus ik weet niet echt hoe ik het moet aanpassen.

Alvast bedankt!

Groeten Stefan

Offline saartje87 - 21/05/2008 15:42
Avatar van saartje87 Nieuw lid Hoi hoi,

Ik zal je even een stukje proberen op weg te helpen 

Zo zou geloof ik je callback functie eruit moeten komen te zien.

function handleResponse() {

if(http.readyState == 4){

eval( http.responseText );
}
}

En dan kan je als test van je php output doen:

setTimeout("alert('Je hebt een nieuw bericht!')", 1000);


Dus het script zonder de script tags:)

Good luck! 
Offline Wave6 - 21/05/2008 19:12 (laatste wijziging 21/05/2008 19:13)
Avatar van Wave6 PHP beginner Nou eventjes ik wil je niet afkraken maar is het niet van toepassing als je met GET methode werkt dat je een querystring maakt?

http.open("GET","alert.php?message="+mssg+",true);

je kan desnoods ook de variable mssg weglaten. En hem op een andere manier definieren, maar dit is tenslotte maar een voorbeeld.
zoiets?
Offline stefan1987 - 21/05/2008 23:11 (laatste wijziging 21/05/2008 23:12)
Avatar van stefan1987 Nieuw lid
saartje87 schreef:
Hoi hoi,

Ik zal je even een stukje proberen op weg te helpen 

Zo zou geloof ik je callback functie eruit moeten komen te zien.

function handleResponse() {

if(http.readyState == 4){

eval( http.responseText );
}
}

En dan kan je als test van je php output doen:

setTimeout("alert('Je hebt een nieuw bericht!')", 1000);


Dus het script zonder de script tags:)

Good luck! 


Hey 

Heel erg bedankt!
Ik heb het voor elkaar gekregen!

Probleem opgelost 

Stefan
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.185s