AJAX - JavaScript in nachgeladenem Content ausführen.

dwex

Erfahrenes Mitglied
Hallo Leute,

ich lade mittels AJAX ein Formular in ID="hauptbereich" wenn ich das Formular jetzt absende dann sende ich das Ergebnis wieder in ID="hauptbereich" - hier wird das Formular wieder angezeigt.

Jetzt möchte ich eine Speicherbestätigung einblenden.
Dazu habe ich ein DIV ID="speichernok" angelegt mit der Meldung "Speichern erfolgreich". Dieses möchte ich nach 5 Sekunden wieder ausblenden. Dazu mache ich folgendes
Code:
<script type="text/javascript">
function leere () {
  document.getElementById("speichernok").style.visibility = 'hidden';;
}

window.setTimeout("leere()", 5000);
</script>
Leider funktioniert das ganze nicht.
Kann jemand weiterhelfen -vielen Dank im voraus!
 
Wenn ich das richtig verstanden habe, ist der JS code im Ergebnis.

Versuch das mal
Code:
(function() {
    window.setTimeout(function() {
        document.getElementById("speichernok").style.visibility = 'hidden';
    }, 5000);
})();
oder
Code:
eval(
    window.setTimeout(function() {
        document.getElementById("speichernok").style.visibility = 'hidden';
    }, 5000);
);
 
Hallo,

ja der Code steht im Ergebnis.
Ich habe jetzt folgendes probiert:
Code:
<script type="text/javascript">
eval(
    window.setTimeout(function() {
        document.getElementById("speichernok").style.visibility = 'hidden';
    }, 5000);
);
</script>
und
Code:
<script type="text/javascript">
(function() {
    window.setTimeout(function() {
        document.getElementById("speichernok").style.visibility = 'hidden';
    }, 5000);
})();
</script>
beides funktioniert leider nicht.

Folgende Infos:
  • Ich binde das JS einfach im laufenden Quellcode ein - also nicht explizit in <head>
  • Ich habe ein Formular welches mit
Code:
onsubmit="return ajaxPost('/systemvorgaben.php', 'ajax=1&'+getFormData(this),'hauptbereich');"
aufgerufen wird - die ajaxPost()-Funktion steht nicht im Ergbnis - funktioniert aber
  • Das Formular funktioniert nicht im IE - das klicken auf das Button löst die Funktion nicht aus.
  • Auch ein einfaches alert() funktioniert NICHT im "Javascript-Bereich"
 
Zuletzt bearbeitet:
Da der JavaScript Code als String vorliegt wird der damit nicht viel anfangen können da er es nicht als JavaScript erkennt.
Eine Möglichkeit wäre hier zum Beispiel einfach den Code rausparsen um dann selbigen auszuführen.

Ich habe das damals so gemacht.

Code:
/**
* nach JavaScript Code parsen 
* und selbigen extrahieren
*@param String was soll durchsucht werden
*@return Array (htmlCode,ScriptCode)
*/
        function parseScriptContent (parseString) {
            var scriptTagPattern = /<script[^>]+>((?:\r|\n|.)*?)<\/script>/gi;
            var scriptCodePattern = new RegExp("(?:<script[^>]+>)((?:\r|\n|.)*?)(?:<\/script>)","im");

            var m = parseString.match(scriptTagPattern);
            var jsCode = "";

            if(m){
                for(var i = 0; i < m.length;i++) {
                    try {
                        jsCode += m[i].match(scriptCodePattern)[1];
                    } catch (e) {
                        alert(e.message);
                    }
                }

                parseString = parseString.replace(scriptTagPattern,"");
                return [parseString,jsCode];
            } else {
                return [parseString,""];
            }
        };
 
Zuletzt bearbeitet:
Zurück