Seite 1 von 1

ajax (wenn wert geändert)

Verfasst: 24.01.2008 22:13
von phillip
hallo ^^

hab mal wieder eine frage zu ajax.

und zwar mach ich eine einfache abfrage, alle 5 sekunden.

das klappt auch gut ;-)

jetzt möchte ich ein fade einbauen, dass aber nur erscheint, wenn der wert sich geändert hat. die function, und der fade steht schon, leider fadets aber all 5 sek xD

ich hoff, der folgende text ist nicht zu lang, sonst einfach schnell melden, und nicht gleich sperren, danke :-)

Code: Alles auswählen

function setOpacity( value ) {
 document.getElementById("msg_alert").style.opacity = value / 10;
 document.getElementById("msg_alert").style.filter = 'alpha(opacity=' + value * 10 + ')';
}

function fadeIn() {
 for( var i = 0 ; i <= 100 ; i++ )
   setTimeout( 'setOpacity(' + (i / 10) + ')' , 8 * i );
}


function load_priv_msg()
{ 

    var xhr; 
    try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   }
    catch (e) 
    {
        try {   xhr = new ActiveXObject('Microsoft.XMLHTTP');    }
        catch (e2) 
        {
          try {  xhr = new XMLHttpRequest();     }
          catch (e3) {  xhr = false;   }
        }
     }

	xhr.onreadystatechange = show_msg;
      	xhr.open('GET', 'ajax_files/priv_msg.php', true);
      	xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    
	xhr.send(null); 


function show_msg()
		{ 


						if(xhr.readyState == 4)
			{
				if(xhr.status == 200)
				{


if (xhr.responseText > 0)
{

document.getElementById('msg_alert').style.display = 'block';

fadeIn();

if (xhr.responseText < 10)
{

					document.getElementById('msg_alert').innerHTML  =   '<span style="margin-left: 3px;">' + xhr.responseText + '</span>';

}
if (xhr.responseText > 10)
{

document.getElementById('msg_alert').innerHTML  =   xhr.responseText;
}



}	
				}	
					
			} 
		}; 

	setTimeout("load_priv_msg()",5000);	

} 

Verfasst: 26.01.2008 12:25
von phillip
niemand eine idee?

Verfasst: 28.01.2008 23:37
von Bernd68
phillip hat geschrieben:niemand eine idee?
Wenn ich alles richtig gesehen habe, durchläuft der Timer alle 5 sec.
die Schleife... (ist ja auch schon spät :-)

Da Du den Fade nur haben möchtest wenn sich ein Wert ändert
(ich weiss nicht welchen Wert Du meinst...) , würde ich dort,
wo sich der Wert ändern kann mit "onChange=fadeIn();" arbeiten.

Wenn Du das nicht so gemeint hattest.. dann vergiss meinen Text
direkt wieder *gg*

Viele Grüsse

Verfasst: 29.01.2008 16:46
von phillip
ja ich denke, es geht schon in diese richtung ^^

mit dem wert meine ich die anzahl ungelesene private nachrichten ;-)

das heisst, es gibt z.B eine neue nachricht -> fadein()
jetzt kommt eine minute lang keine neue nachricht, also kein fadein().

plötzlich ändert sich der wert auf 2 -> wieder fadein()

Verfasst: 29.01.2008 22:01
von Bernd68
*jap*

ich glaube Du solltest den Timer von Anfang an deaktivieren.
Und erst na der Action den Timer starten. In der Function wo der
Fade abläuft, deaktivierst Du den Timer für den Fade wieder (am Ende).

function setTimers() {
mytimer = window.setTimeout("load_priv_msg()",5000);
}

// Also das document.getElementById wegmachen....

Dort, wo sich der Wert ändert oder ändern kann...:

... onChange=setTimers();

Das müsste eigentlich so klappen.

LG