1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Bild per Ajax laden (oder andere alternativ Lösung)

Dieses Thema im Forum "PHP & Co." wurde erstellt von karolherbst, 02.05.09.

  1. karolherbst

    karolherbst Danziger Kant

    Dabei seit:
    11.05.07
    Beiträge:
    3.878
    hier erstmal mein Code bis jetzt
    Code:
    var Bild;
    function loadImage(string){ //string: Adresse zum Bild
    	document.getElementById('Drehteil').style.visibility='visible'; //so ein Ladeteil eben
    	var reqLoadPic=new XMLHttpRequest();
    	reqLoadPic.open('POST',string,true);
    	reqLoadPic.send(null);
    	reqLoadPic.onreadystatechange=function(){
    		if(reqLoadPic.readystate=4){
    			document.getElementById('Bild').src=string;
    			Bild=string;
    			document.getElementById('Drehteil').style.visibility='hidden';
    		}
    	}
    }
    An sich funktioniert da alles, das ding ist nur, dass er schon im readystate 4 ist, bevor das Bild richtig gecached wurde. Also mein Grundgedanke war, dass durch die Ajax Funktion das Bild im Hintergrund erstmal gecahed wird und dass danach einfach die src vom img-tag verändert wird (habe schon auf anderen Seiten mit caching gearbeitet, waren dort aber nur Bilder von wenigen kb, somit kann man auch schon beim Aufbau der Seite cachen, hier aber sind die Bilder 0,5-1,5MB groß und ich denke, dass dann ein gesamtes cachen nicht in Frage kommt. Das einzige Problem an dieser Variante hier ist, dass die Funktion für readystate=4 viel zu früh aufgerufen wird.
    Kann mir jemand sagen, woran das liegt oder ob ich einen generellen Denkfehler hier drinnen habe. gut wäre auch eine alternative Lösung, da ich ja nur das Ladedings da angezeigt haben will, solange das neue Bild noch nicht geladen wird.

    Danke
     
  2. naich

    naich Pommerscher Krummstiel

    Dabei seit:
    22.11.08
    Beiträge:
    3.059
    Du musst wenn dann schon die von Ajax empfangenen Daten weiterverarbeiten, sonst geht denke ich nicht. Da ich sowas schon einige Zeit nicht mehr gemacht habe, kann ich dir jetzt keinen genauen Code geben.

    Allerdings denke ich, das das ganze Unternehmen recht sinnlos ist.
    Ich würde das Bild einfach als "Nachlade-Jepg" speichern (ich glaube das war die Einstellung progressiv, ich kann mich aber auch täuschen...). Sprich, das Bild wird schon bald in schlechterer (verpixelter) Quali angezeigt, während der Rest des Bildes noch geladen wird Das Bild wird dann immer schärfer.
     

Diese Seite empfehlen