PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Inhalte nachladen ohne Ajax



glaras
09-03-2010, 21:36
Hallo,

ich habe ein Webseite, die Anlagendaten visualisiert. Die HTML-Dateien werden auf dem Server mit einem Perl-Skript generiert und geändert.

Die Inhalte lade ich moment per Javascript nach. Jedoch wird immer die komplette Seite nachgeladen. Auch statische Elemente, was ich gerne vermeiden möchte.

Ist es möglich einzelne Teile (divs) per Javascript nachzuladen? Ich möchte nur ungern auf Ajax zurückgreifen, weil ich einen minimalistischen Webserver verwende. Mir würde es reichen wenn Javascript nur die HTML-Datei nachläd (ohne eingebundene Bilder).

Kann man das mit Javascript umsetzen?

Hier meine aktuelle Variante:

<script>
timeSlap=6 // sekunden
reloading=function()
{
setTimeout("reloading()",1000);

status=timeSlap+" sekunden bis zum reload";
if(timeSlap>0) timeSlap--;
else location.reload();
}
</script>
<body onload="reloading()">

msi
09-03-2010, 23:29
was du suchst ist ajax und hat nichts mit dem webserver zu tun.
der Webserver braucht dafür nichts besonderes unterstützen.

glaras
14-04-2010, 14:56
Ich habe jetzt genau das was ich brauche. Jedoch habe ich nun das Problem das egal welcher Browser nach kurzer Zeit 100% CPU-Last verursacht. Woran könnte das liegen?

<html>
<body>
<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('ReloadThis').innerHTML=xm lHttp.responseText;
setTimeout('Ajax()',2000);
}
xmlHttp.open("GET","text.txt",true);
xmlHttp.send(null);
}
window.onload=function(){
setTimeout('Ajax()',2000);
}
</script>
<div id = "elsewhat">shouldn't flicker</div>
<div id="ReloadThis">HEY</div>
</body>
</html>

msi
14-04-2010, 23:25
onreadystatechange wird während eines ajax requests öfter aufgerufen.
Du musst auch noch den readyState deines Objekts testen, der ist bei
einer vollständigen Ladung 4. Erst dann darfst du Ajax() erneut aufrugen (über das Timeout).
In deinem Fall wird setTimeout("Ajax()",2000) mehrmals pro Ajax request aufgerufen, was zu einem exponentionellen wachstum führt und damit zu 100% CPU auslastung nach best. zeit. Hast du das Problem verstanden?

undefined
15-04-2010, 14:23
Wie msi schon geschrieben hat ist onreadystatechange eine Methode die meherer Parameter abfängt. Dein Code ist also unvollständig!


...
var abfrage = function()
{
switch( xmlHttp.readyState ) {
// Hier die case Operatoren definieren, siehe Dokumentation xmlHttp.status und getResponseHeader.
}
}
...
xmlHttp.onreadystatechange= abfrage;
...