Rolf: Submit einer Form stockt

Hallo,

hier mal eine kurze Beschreibung:

Ich habe eine Form mit einem IFrame. Dieses nutze ich um den Inhalt einer Datei (input type="file") mittels einem Javascript Submit zu holen. Dabei wird kurzzeitig das target und das action Attribut der Form geändert, da für das auslesen und setzen der Daten eine andere PHP-Datei zuständig ist.

Auszug aus der HTML (2xform mit diversen input Elementen, XHTML valide):

<form name="ul_action" enctype="multipart/form-data" action="/test1.php" method="post" target="_self">  
  <iframe style="display:none;" name="temp_content" id="temp_content"></iframe>  
  <input type="file" id="ul1" name="ul2" value="" />  
  <span onclick="load_content();">Lade Inhalt von ul1</span>  
  <textarea id="display_content" name="display_content"></textarea>  
</form>

vollständige Funktion

// Nutzung von jQuery  
function load_content() {  
  temptar = $("#ul_action").attr("target");  
  tempact = $("#ul_action").attr("action");  
  $("#ul_action").attr("target", "temp_content");  
  $("#ul_action").attr("action", "/test2.php");  
  $("#ul_action").submit();  
  $("#ul_action").attr("target", temptar);  
  $("#ul_action").attr("action", tempact);  
}

Klicke ich auf "Lade Inhalt von ul1", dann scheint es so, als ob es kurzzeitig einen Hänger gibt, obwohl load_content() umgehend aufgerufen wird. Anscheinend gibt es in dem Skript einen Hänger. Erst nach einer gefühlten Sekunde wird der Submit ausgeführt und der Inhalt in der textarea platziert. Nur habe ich keine Idee warum. Dauert es solange bis die DOM-Elemente gefunden werden, in dem Fall die form. Es ist dabei egal ob ich jQuery nutze, oder den Weg über document.getElementById gehe. Den Hänger gibt es im FF9 und IE8. Der Chrome führt es ohne Verzögerung aus. Es passiert bei dem Klick auch nichts anderes, nur der Submit.

Kann mir bitte jemand einen Rat geben, an was es liegen kann.

Danke & Gruß

  1. Hi,

    Erst nach einer gefühlten Sekunde wird der Submit ausgeführt und der Inhalt in der textarea platziert.

    woran misst Du den Zeitpunkt "Submit wird ausgeführt"? Der Submit ist nur der Beginn eines Requests, dessen Response bis zum Ende durchaus sehr viel länger als nur eine Sekunde dauern kann. Darüber hinaus sehe ich nichts in dem Script, was dazu führen könnte, dass irgendetwas in der Textarea landet - ganz offensichtlich scheidet dies als Kriterium für "Submit wird ausgeführt" aus, da es garantiert verspätet passiert.

    Nur habe ich keine Idee warum. Dauert es solange bis die DOM-Elemente gefunden werden, in dem Fall die form. Es ist dabei egal ob ich jQuery nutze, oder den Weg über document.getElementById gehe.

    Mit jQuery kannst Du auf jeden Fall optimierter umgehen, z.B. indem Du sämtliche Attributänderungen in den selben Methodenaufruf packst und die Methoden aneinander hängst.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes