• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Failed to execute 'send' on 'XMLHttpRequest': Failed to load....

Hallo alle miteinander!

Bei folgender Problematik komme ich auch mit Google nicht weiter.

In meiner Anwendung (eine Art Einsatzkalender) wird ein neues Element gespeichert und per Javascript eine Einsatzkarte eingeblendet, welche die Details des Einsatzes beinhaltet. Diese können hier nochmal verändert und erneut gespeichert werden. Da ich ein erneutes Laden der Seite beim Verändern der Details verhindern möchte, werden beim Drückern des "Speichern" Buttons die Werte der entsprechenden Inputfelder per document.getElementById("entsprechendes_Inputfeld").value gelesen und in einem Link schließlich per Ajax an eine PHP-Seite geschickt, wo die eigentliche Speicherung stattfindet:

Code:
var mein_link = "AJAX_fed.php?eigenschaft1=blablabla&eigenschaft2=1234";
        
// AJAX Teil

resOb = erzXHRObjekt();
resOb.open('get',mein_link,false);
resOb.onreadystatechange = neuen_einsatz_zeigen;
resOb.send(null);

Bei einer einzigen Unterart der Einsätze kommt es zu folgendem Fehler: 1 x lassen sich die Eigenschaften des Einsatzes problemlos verändern. Versuche ich jedoch sofort danach eine erneute Korrektur vorzunehmen, bekomme ich folgenden Fehler:

ncaught DOMException: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'http://localhost:8888/Gabriel/tutaj...test&aktion=einsatz_speichern_oder_bearbeiten': Document is already detached.
at HTMLInputElement.<anonymous> (http://localhost:8888/Gabriel/tutaj/tools_fed_v3.js:93:9)
at HTMLInputElement.dispatch (https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js:3:10316)
at HTMLInputElement.q.handle (https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js:3:8343)


Es macht mich stutzig, dass es nicht immer auftritt. Nur wenn ich aus einem Serienereignis ein Element herauslöse und dieses als Einzelereignis gespeichert wird, kommt es zu diesem Fehler. Das Skript, welches dabei genutzt wird, ist jedoch das gleiche wie sonst beim Speichern der Änderungen. Der Unterschied liegt evtl. im Aufbau / Struktur der Seite.

Normalerweise, wenn ein neues Element gespeichert werden soll (s. Screenshot) wird das Pluszeichen ganz oben in der linken Ecke gedrückt, worauf der Eingabedialog für einen neuen Einsatz erscheint (s. Mitte des Bildes), nach der Eingabe und dem Speichern erscheint dann links die braune "Einsatzkarte" mit Einsatzdetails. Sobald diese geschaffen wurde, werden einige Elemente mit diversen JS-Funktionen verknüpft (z.B. der Schieberegler "Einsatz wiederholen" blendet dann weitere mögliche Eigenschaften ein, wie wöchentlich, 14-tägig etc.). Soweit, so gut.

Nach dem Speichern des Elements erscheint dieses im Kalender - und hier muss man wissen, dass dieses sich in einem <iframe> befindet, welches nach der Veränderung jeglicher Einsatzdetails einfach neugeladen wird und somit eine aktuelle Kalenderansicht bietet. Wenn ich nun also zunächst ein sich wiederholendes Event erschaffe und dann - wie oben beschrieben - eines der Elemente dieser Serie auf einten anderen Tag verschiebe, erscheint wieder in der Einsatzübersicht eine neue Einsatzkarte, allerdings kommt der Impuls hierfür aus dem Kalender heraus, der im <iframe> ist, so dass bei der Verknüpfung der Elemente mit entsprechenden Funktionen diesmal window.parent.entsprechendes Element benutzt wird. Praktisch sieht es so aus:

Code:
var fed_funktionen_start = function(id) {
    
    // Es ist ein Unterschied, ob fed.php oder der fed_kalender.php, der sich in einem <iframe> innerhalb des fed.php befindet, das neue Element, auf welches sich die nachfolgenden Funktionen beziehen, erschaffen hat
    if(document.location.href.indexOf("fed_kalender.php" > -1)) {
        var meine_position = window.parent;
    }
    else {
        var meine_position = window;
    }

    // Details einblenden
    meine_position.$("#einsatzkarte" + id).click(function(){
        meine_position.$("#details" + id).fadeIn(1000);
    });


noch mehr code.... noch mehr code... noch mehr code...

Damit funktionieren auch die Schieberegler, Änderungen an den Einsatzdetails können auch vorgenommen werden, aber wie oben beschrieben nur 1 x. Kann mir jemand erklären, warum es zu dem oben beschriebenem Fehler kommen kann?...
 

Anhänge

  • Kalenderansicht.png
    Kalenderansicht.png
    218,3 KB · Aufrufe: 6
Werbung:
Lösung selber gefunden, bzw. zumindest das Problem lokalisiert. Wenn ich im Kalender ein Element verschiebe, wird das Skript wie bereits gesagt von der Seite mit dem Kalender aus gestartet. Allerdings ist es so, dass nach dem Speichern der Änderungen der Kalender im <iframe> neu geladen wird. Die Elemente im Parent-Element verweise auf Funktionen die in eine Seite eingebettet waren, die es nicht mehr gibt.
 
Zurück
Oben