Ajax chat refresh

Status
Niet open voor verdere reacties.

kom94

Gebruiker
Lid geworden
3 okt 2009
Berichten
23
Hoi

ik heb een chat gemaakt maar in iframe dus ben opzoek naar een ajax refresh kwam op deze site terecht (weer)
en vond een script alleen ik heb een probleem dat hij niet alleen het divje refresh maar de hele pagina wat moet ik veranderen
of wie weet er een betere scripteje?

Code:
<?php
include("../besturing.php");
include("../bbparser.php");
include("boven.php");
$Date = "".date("d-m-Y H:i")."";
?>
<script type="text/javascript">
function Ajax(){
var xmlHttp;
    try{    
        xmlHttp=new XMLHttpRequest();// Firefox, Opera 8.0+, Safari
    }catch (e){
        try{
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
        }catch (e){
            try{
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }catch (e){
                alert("No AJAX!?");
                return false;
            }
        }
    }
    xmlHttp.onreadystatechange=function(){
        document.getElementById('Refresh').innerHTML=xmlHttp.responseText;
        setTimeout('Ajax()',2000);
    }
    xmlHttp.open("GET","view.php",true);
    xmlHttp.send(null); 
}
window.onload=function(){
    1setTimeout('Ajax()',8000);
}
</script>
<div style="overflow:auto; width: 100%; height: 150px;" id='Refresh'>
<?php
echo"<meta http-equiv=\"refresh\" content=\"3; URL=\">";
$chat = mysql_query("SELECT ID,Lid,Lidid,Bericht,Datum FROM chat ORDER BY ID DESC limit 10") or die(mysql_error());
while($Bericht= mysql_fetch_object($chat)){
if($beheerlogin){
echo"<a onclick=\"window.open('verwijder.php?id=$Bericht->ID','','width=200,height=200');\" id='b' href='#b'><img src='/images/icons/verwijder.png' /></a> ";
}
if($beheerlogin || ($login && $Bericht->Lidid == $InlogLid->ID)) {
echo("<a onclick=\"window.open('edit.php?id=$Bericht->ID','','width=200,height=200');\" id='b' href='#b'><img src='/images/icons/bewerk.png' /></a> ");
}
echo"<b title='Gepost op: $Bericht->Datum'><a style='color: black; text-decoration: none;' href='/ledenpaneel/?profiel=profiel&id=$Bericht->Lidid' target='_blank'>$Bericht->Lid</a></b> - ";
echo"<font style='color: $OPS->textcolor;'>".nl2br(Opmaak($Bericht->Bericht))."</font><hr>";
}
echo"Made by: <a style='text-decoration: none;' href='http://vbspul.eu' target= '_blank'>Vbspul.eu</a></div>";
echo"<hr><form method='post' action=''>";
echo"<input type='text' id='bbcode' size='80' name='Bericht' value=' '><input type='submit' name='send' value='Verstuur'></form>";
if($_POST["send"]){
mysql_query("
			
				INSERT INTO 
					chat 
					(
					ID, 
					Lid,
					Lidid,
					Bericht,
					Datum
					) 
				VALUES 
					(
					'',
					'$Lid->Gebruikersnaam',
					'$Lid->ID',
					'".$_POST['Bericht']."',
                                        '$Date'
					)"
				
			);
}
?>
 
Laatst bewerkt:
Nou, mischien moet je eens wat HTML tutorials doornemen, want je pagina is helemaal geen HTML pagina. Hell, je hebt niet eens een <html> tag...
 
Nou, mischien moet je eens wat HTML tutorials doornemen, want je pagina is helemaal geen HTML pagina. Hell, je hebt niet eens een <html> tag...

XD nee omdat het php is en dit is ook maar een test pagina dus als ik het echt ga gebruiken zet ik heb op de site waar ik dus de layout include boven.php en onder.php :) in de paginas natuurlijk XD
 
ja, dat is leuk enzo, maar als je het test moet je dus wel even een correcte html pagina gebruiken. Anders kan het zijn dat ie niet werkt.


Ohja, en je setTimeout() functie heeft geen 2e parameter (de tijd). Ohja, en je script is een beetje raar. Probeer zoiets:
HTML:
<!doctype html>

<html lang='en'>

<head>
<title>test</title>
<meta charset='UTF-8' />
</head>

<body>


<div id='refresh'></div>


<script>



function addEvent(obj, type, fn)
{
   if(obj.attachEvent)
   {
      obj['e' + type + fn] = fn;
      obj[type + fn] = function()
      {
         obj['e' + type + fn](window.event);
      }
      obj.attachEvent('on' + type, obj[type + fn]);
   }else{
      obj.addEventListener(type, fn, false);
   }
}




function request(file, callback)
{
   var handle = (XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");

   if(handle.overrideMimeType)
   {
      handle.overrideMimeType('text/plain');
   }

   handle.open('GET', file, true);

   addEvent(handle, 'readystatechange', function()
   {
      if(this.readyState == 4)
      {
         callback(this.responseText);
      }
   });

   handle.send(null);
};


</script>



<script>

// de magie:




setInterval(function()
{
   request('berichten.php', function(res)
   {
      document.getElementById('refresh').innerHTML = res;
   });
}, 10000);

// request berichten.php om de 10 seconden en drop het in je 'refresh' div


</script>

</body>
</html>
 
Laatst bewerkt:
ja, dat is leuk enzo, maar als je het test moet je dus wel even een correcte html pagina gebruiken. Anders kan het zijn dat ie niet werkt.


Ohja, en je setTimeout() functie heeft geen 2e parameter (de tijd). Ohja, en je script is een beetje raar. Probeer zoiets:
HTML:
<!doctype html>

<html lang='en'>

<head>
<title>test</title>
<meta charset='UTF-8' />
</head>

<body>


<div id='refresh'></div>


<script>



function addEvent(obj, type, fn)
{
   if(obj.attachEvent)
   {
      obj['e' + type + fn] = fn;
      obj[type + fn] = function()
      {
         obj['e' + type + fn](window.event);
      }
      obj.attachEvent('on' + type, obj[type + fn]);
   }else{
      obj.addEventListener(type, fn, false);
   }
}




function request(file, callback)
{
   var handle = (XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");

   if(handle.overrideMimeType)
   {
      handle.overrideMimeType('text/plain');
   }

   handle.open('GET', file, true);

   addEvent(handle, 'readystatechange', function()
   {
      if(this.readyState == 4)
      {
         callback(this.responseText);
      }
   });

   handle.send(null);
};


</script>



<script>

// de magie:




setInterval(function()
{
   request('berichten.php', function(res)
   {
      document.getElementById('refresh').innerHTML = res;
   });
}, 10000);

// request berichten.php om de 10 seconden en drop het in je 'refresh' div


</script>

</body>
</html>

Zon script werkt niet :)
 
Zon script werkt niet
eh, jawel, zo'n script werkt wel. Hier in ieder geval wel. Als je nog meer help wilt moet je echt wat meer uitleg geven. Wat werkt er niet aan? Welke browser gebruik je? etc.
 
eh, jawel, zo'n script werkt wel. Hier in ieder geval wel. Als je nog meer help wilt moet je echt wat meer uitleg geven. Wat werkt er niet aan? Welke browser gebruik je? etc.

Hij laad de view.php niet en gebruik gewoon chrome ie8 opera en safari!
 
Ja, maar in Safari en Chrome zit een fouten-console ingebouwd. Geeft ie daar ook geen fouten in aan? Is je bestand dat je laad wel gevuld met iets? Stop tussen je code eens wat alert()-calls!
 
Ja, maar in Safari en Chrome zit een fouten-console ingebouwd. Geeft ie daar ook geen fouten in aan? Is je bestand dat je laad wel gevuld met iets? Stop tussen je code eens wat alert()-calls!

:) ik ken dus geen ajax scripting of java dus die fout allerts toevoegen gaat me niet lukken

Fout van chrome:
document.getElementById('refresh').innerHTML = res;

En hij werkt lag dus aan de divje die een verkeerde naam had :)

Edit:
te vroeg gejuicht want nu herlaad hij opeens elke seconde als je lang op de pagina zit (sla opteelt :))
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan