Kan er iemand mij helpen?

Ik heb een alert.php bestandje (included via PHP in m'n header), die laat zien hoeveel nieuwe berichten iemand ontvangt. En in de toekomst nog een rank status etc..
Maar... Hoe laat ik hem om de 10 seconde refreshen zonder dat heel de page refresht?

Ik heb al vanalles geprobeerd wat mensen op Google zetten... Maar helaas tot hiertoe geen succes. Ik ben ook geen crack in scripten, dus zeker niet goed in Java of Jquery.

Zou iemand mij wat hulp kunnen bieden?
Zoek eens op AJAX.
Je moet namelijk client side een timer inbouwen die om de zoveel seconden/minuten een call naar de server maakt om de status te controleren. Java heb je daarvoor niet nodig.... JQuery of Javascript wel.
Hey Erwin, bedankt voor de snelle post. Is er een mogelijkheid dat je een volledige URL kan geven over wat ik nodig heb? Want als ik "AJAX reload PHP div" doe in Google, heb ik de eerste 5 pagina's al gelezen en geprobeerd.

Ik ben waarschijnlijk gewoon te dom om iets te missen ofzo.
Ik had eentje die wel werkte... Maar ik liet me dan even 20 sms'jes toegestuurd krijgen, en ipv "You have 20 new messages" resette hij terug naar "You have 0 new messages."
jQuery:

$(document).ready(function(){
		$.ajax({
			url: "alert.php",
			cache: false,
			success: function(html){
				$(".result").empty().html(html);
			}
		});
});

In een divje met class="result" verschijnt het resultaat.
Hey Aar. Bedankt voor het antwoorden, maar werkt nog steeds niet met die code.
Moet ik dan niet op een of andere manier laten refreshen om de zoveel tijd?
De code met refreshen:
$(document).ready(function(){

  var ajaxRecursive = function() {
    $.ajax({
      url: "alert.php",
      cache: false,
      context: $('#result'),
      success: function(html){
        jQuery(this).empty().html(html);
      }
    });
    
    setTimeout('ajaxRecursive()', 2000);
    // 2000ms is de tijd dat hij weer moet
    // refreshen. Dit komt overeen met 2s.
  };
});



@aar, je hebt een foutje. Je zegt id="result" maar in JS doe je .result
Ja, inderdaad, class is 'punt' en id is 'hekje', haal ze vaak door elkaar.
Irritant :-P
Deze heb ik nu.

//m'n header.php 

<script src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
 <script>
var auto_refresh = setInterval(
function()
{
$('#result').fadeOut('slow').load('alert.php').fadeIn("slow");
}, 2000);
</script>


<div id="result">
<?PHP
include ("alert.php");
?>
</div> 


//En in m'n alert.php staat 


<?PHP
include ("functie.php");
?>
<?php /* ------------------------- */
  $dbres                = mysql_query("SELECT * FROM `pm` WHERE (`read`) = 0 AND (`to`) = '" . $_SESSION['usr'] . "'");
  $unread              = mysql_num_rows($dbres);
/* ------------------------- */ 

echo "<a href=\"pm_inbox.php\"><b><font size=2 color=white>You have $unread messages. </font></b></a>";
?>

PS: doe wel aan foutafhandeling op je query.
Gebruik bij AJAX request geen setInterval maar setTimeout op de manier zoals ik liet zien.

Waarom?
setInterval voert de functie per 2000ms uit. Een AJAX request duurt soms wel wat langer. Het probleem wat je dan krijgt is dat de AJAX request nog bezig is en dan wordt de volgende al gestart. En zo gaat het door. Je krijgt dan een heleboel AJAX requests op de server die liggen te wachten en dit hoopt zich steeds maar op. Je kan wel nagaan dat dit niet ten gunste komt van de snelheid van een website.

In je PHP code staan nog wel wat fouten:
- Geen quotes om attributen.
- Inline CSS (style="", font="", width="", enz.) moet je niet gebruiken. Geef het een class/id mee en stijl die in een stylesheet die je vervolgens in de pagina laat met de link tag.
- Foutafhandeling query mist.
- Gebruik in PHP zoveel mogelijk enkele quotes en in HTML zoveel mogelijke dubbele. Dan hoef je ze niet meer te escapen.
- Haal variabelen uit quotes, met [php]operators.string[/php]

Reageren