Olaf: removeClass will nur kurz

Hi, habe mit dem Skriot hier das Problem, dass er den Klassenwechsel scheinbar nur ganz kurz vornimmt. Ich sehe den Inhalt des Elements ganz kurz aufblitzen und dann scheint die Klasse wieder auf "aktualisiertHide" zurückgesetzt zu werden. "aktualisiertHide" ist quasi der default-Wert, der bereit in der per load geladenen .php Datei steht.

  
function submitForm(div,form, control) {  
	$.ajaxSetup({ cache: false });  
	$.ajax({type:'POST', url: 'controls/'+control+'.php', data:$('#'+form).serialize(), success: function(response) {  
		var antwort=response;  
		if(antwort=="<ok>") {  
			$('#'+div).load('forms/'+form+'.php');  
			$('#'+div).find('span').removeClass('aktualisiertHide').addClass('aktualisiertShow');  
		}  
		else {  
			$('#'+div).html(response);  
		}  
	}});  
	return false;  
}  

  1. servus Olaf,

    Hi, habe mit dem Skriot hier das Problem, dass er den Klassenwechsel scheinbar nur ganz kurz vornimmt. Ich sehe den Inhalt des Elements ganz kurz aufblitzen und dann scheint die Klasse wieder auf "aktualisiertHide" zurückgesetzt zu werden. "aktualisiertHide" ist quasi der default-Wert, der bereit in der per load geladenen .php Datei steht.

    Was sagt die Fehlerkonsole?

    der wurzelbert

    --
    "The depressing thing about tennis is that no matter how good I get, I´ll never be as good as a wall."
    1. Was sagt die Fehlerkonsole?

      nutze Firefox und Firebug und da kommt kein Fehler.

  2.   	$('#'+div).load('forms/'+form+'.php');  
    

    Dieses Laden ist asynchron (das »A« in Ajax steht für asynchron). Der JavaScript-Interpreter wartet nicht mit der Ausführung des folgendes Statements auf die Serverantwort.

      	$('#'+div).find('span').removeClass('aktualisiertHide').addClass('aktualisiertShow');  
    

    Vermutung: Dies wird sofort ausgeführt, ohne auf die Serverantwort zu warten. Die trudelt kurze Zeit später ein, sodass der Inhalt des Elements wird mit der Serverantwort überschrieben.

    Arbeite mit einer Callback-Funktion, die ausgeführt wird, wenn die Daten geladen und das DOM aktualisiert wurde.

    http://api.jquery.com/load/

    Mathias

    1. Hi Mathias,

      dass er den Befehl remoclass... schon ausführt bevor der neue Inhalt da ist, war auch meine Vermutung.
      Danke für den Callback Tipp. Schaue ich mir jetzt mal an.
      jQuery und AJAX sind (schönes) Neuland für mich.

      1. So scheint's zu funktionieren:

          
        function submitForm(div,form, control) {  
        	$.ajaxSetup({ cache: false });  
        	$.ajax({type:'POST', url: 'controls/'+control+'.php', data:$('#'+form).serialize(), success: function(response) {  
        		var antwort=response;  
        		if(antwort=="<ok>") {  
        			$('#'+div).load('forms/'+form+'.php', function() {  
        				$('#'+div).find('span').removeClass('aktualisiertHide').addClass('aktualisiertShow');  
        			});  
        		}  
        		else {  
        			$('#'+div).html(response);  
        		}  
        	}});  
        	return false;  
        }  
        
        

        Euch vielen Dank!

  3. Hallo Olaf,

    function submitForm(div,form, control) {

      
    kann es sein, dass du Formular abschickst und dann die Serverantwort siehst?  
      
      
    Gruß, Jürgen