AjaxStatus wird nach einem fehlerhaften Request nicht wieder angezeigt

  • Betroffene Version
    WoltLab Suite 3.1
    Betroffene App
    WoltLab Suite Core

    Folgender Code:

    Wenn der erste Request fehlschlägt (weil eine PermissionDeniedException geworfen wird), wird beim zweiten Request (andere object-id) kein AjaxStatus mehr angezeigt. In der Console wird nichts angezeigt.

  • Weil selbes Problem :D

    • Offizieller Beitrag

    Das kann ich so auf Basis des Codes nicht nachvollziehen, es gibt keinen Code-Path, bei dem im Fehlerfall der Spinner nicht ausgeblendet wird. Das von dir geschilderte Verhalten würde nur Sinn ergeben, wenn der Counter in AjaxStatus negativ wäre. Hast du mal per Step-Debugger überprüft, ob der Counter von einer anderen Stelle aus beeinflusst wird? In Chrome lässt sich JS auch on-the-fly bearbeiten, praktisch um schnell mal eine Debug-Ausgabe einzubauen.

  • Alexander Ebert 10. November 2021 um 18:32

    Hat das Label Bestätigt hinzugefügt.
    • Offizieller Beitrag

    Ja, das hatte ich dann auch bemerkt.

    Im folgenden auch mal der JS-Code von dir in "modern". Das ist mit dem IE11 nicht kompatibel, aber das war der Code vorher auch nicht.

  • Alexander Ebert 10. November 2021 um 19:28

    Hat das Label 5.3.15 hinzugefügt.
  • Alexander Ebert 10. November 2021 um 19:28

    Hat das Label 5.4.9 hinzugefügt.
  • Alexander Ebert 10. November 2021 um 19:28

    Hat das Label 5.2.16 hinzugefügt.
  • Alexander Ebert 10. November 2021 um 19:28

    Hat das Label von Bestätigt auf Behoben geändert.
  • Mahlzeit.

    Ich muss das Thema nochmal ausgraben.

    Kann es sein, dass der Fehler wieder/noch vorhanden ist?


    Beim ersten Aufruf funktioniert es mit ein- & ausblenden, der zweite Aufruf lässt sich nicht mehr ausblenden.


    Ich nutze folgendes zum einblenden:

    Code
    require(['WoltLabSuite/Core/Ajax/Status'], function(AjaxStatus) { 
    	AjaxStatus.show();
    }); 

    und folgendes zum ausblenden:

    Code
    require(['WoltLabSuite/Core/Ajax/Status'], function(AjaxStatus) { 
    	AjaxStatus.hide();
    }); 


    Selber Effekt auch, wenn ich es so schreibe:

    Code
    require(['WoltLabSuite/Core/Ajax/Status'], function(AjaxStatus) { 
    	AjaxStatus.show();
    	
    		// Code
    		// Code
    		// Code
    
    	AjaxStatus.hide();
    }); 


    Beim ersten Aufruf wird der Loader eingeblendet und auch wieder ausgeblendet, so wie es soll.

    Beim nächsten Aufruf wird der Loader dauerhaft eingeblendet, das bedeutet, es gibt keine Reaktion mehr auf hide().


    Könnte das jemand überprüfen und bestätigen?


    (Chrome Version 122.0.6261.58 (Offizieller Build) (64-Bit))


    Edit:
    Ich hab mir jetzt mal 2 Buttons erstellt und mehrfach mit unterschiedlichen Klickgeschwindigkeiten getestet.

    Code
    <button type="button" onclick="require(['WoltLabSuite/Core/Ajax/Status'], function(AjaxStatus) { AjaxStatus.show();}); " >Test AN</button>
    <button type="button" onclick="require(['WoltLabSuite/Core/Ajax/Status'], function(AjaxStatus) { AjaxStatus.hide();}); " >Test AUS</button>

    Offenbar passiert das willkürlich.

    Mal geht es eine ganze Zeit lang gut, dann wieder nicht.

    Einmal editiert, zuletzt von Captain Crunch (21. Februar 2024 um 15:06)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!