AjaxStatus wird nach einem fehlerhaften Request nicht wieder angezeigt

  • Affected Version
    WoltLab Suite 3.1
    Affected 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

  • 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.

  • 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 November 10, 2021 at 7:28 PM

    Set the Label from Confirmed to Fixed
  • 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.

    Edited once, last by Captain Crunch (February 21, 2024 at 3:06 PM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!