# Ajax-Loader verschwindet nicht

**URL:** <https://forum.shopware.com/t/ajax-loader-verschwindet-nicht/52020>\
**Category:** Programmierung\
**Created:** [26. März 2018 um 09:39 UTC](https://forum.shopware.com/t/ajax-loader-verschwindet-nicht/52020 "2018-03-26T09:39:43Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [26. März 2018 um 09:39 UTC](https://forum.shopware.com/t/ajax-loader-verschwindet-nicht/52020/1 "2018-03-26T09:39:43Z")

</div>

Hallo,

ich habe einen Ajax-Call zum Nachladen von Daten geschrieben.

Dazu möchte ich natürlich den obligatorischen Loader mit dunklem Overlay anzeigen.

ich nutze also vorm Ajax-Call&nbsp;**("body").setLoading(true);\*\* und danach dann zum ausblenden wieder\*\*&nbsp;(„body“).setLoading(false);**

&nbsp;

leider bleibt der Loader aber trotz einem erfolgreichen Call oft stehen… was mach ich noch falsch?

&nbsp;

ps: keine Fehlermeldungen in der Console.

&nbsp;

EDIT:

```
 $(".js--loading-indicator, .js--overlay").fadeOut(300, function() { $(".js--loading-indicator, .js--overlay").remove(); });

```

&nbsp;

so kann ich das Ding ausblenden… warum gehts auf dem normalen Weg nicht?

---

<div class="post-metadata">

**Author:** ![Misengo](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/misengo/32/21446_2.png) [@Misengo](https://forum.shopware.com/u/Misengo)\
**Post date:** [28. März 2018 um 20:42 UTC](https://forum.shopware.com/t/ajax-loader-verschwindet-nicht/52020/2 "2018-03-28T20:42:42Z")

</div>

> [@FloC3 schrieb:](https://forum.shopware.com/profile/27446/FloC3 "FloC3")
> 
> Hallo,
> 
> ich habe einen Ajax-Call zum Nachladen von Daten geschrieben.
> 
> Dazu möchte ich natürlich den obligatorischen Loader mit dunklem Overlay anzeigen.
> 
> ich nutze also vorm Ajax-Call&nbsp;**$(„body“).setLoading(true);** und danach dann zum ausblenden wieder\*\*&nbsp;$(„body“).setLoading(false);\*\*
> 
> &nbsp;
> 
> leider bleibt der Loader aber trotz einem erfolgreichen Call oft stehen… was mach ich noch falsch?
> 
> &nbsp;
> 
> ps: keine Fehlermeldungen in der Console.
> 
> &nbsp;
> 
> EDIT:
> 
> $(„.js–loading-indicator, .js–overlay“).fadeOut(300, function() { $(„.js–loading-indicator, .js–overlay“).remove(); });
> 
> &nbsp;
> 
> so kann ich das Ding ausblenden… warum gehts auf dem normalen Weg nicht?

&nbsp;

Würde mich auch interessieren. Habe es auch auf diesem Wege mal probiert einzubinden, da der Loader aber nie Verschwand habe ich eine andere Lösunge gefunden.&nbsp;

---

<div class="post-metadata">

**Author:** ![Shopwareianer](https://avatars.discourse-cdn.com/v4/letter/s/b4bc9f/32.png) [@Shopwareianer](https://forum.shopware.com/u/Shopwareianer)\
**Post date:** [29. März 2018 um 04:21 UTC](https://forum.shopware.com/t/ajax-loader-verschwindet-nicht/52020/3 "2018-03-29T04:21:09Z")

</div>

Das Overlay öffnest du über das entsprechende jQuery Plugin

> <https://github.com/shopware/shopware/blob/5.3/themes/Frontend/Responsive/frontend/_public/src/js/jquery.overlay.js#L70-L118>

```
$.overlay.open().then(function);

```

Bzgl. des Loaders: Was gibt der Ajax Request denn zurück? Was ist wenn du testweise mal&nbsp;setLoading bei der success & error Meldung rein packst - Schließt es sich dann? Du musst ja hier irgendwie debuggen. Was ist wenn du den loader direkt in der console killst?

Alternativ auch direkt über das jQuery Plugin

> <https://github.com/shopware/shopware/blob/56df57575909854d2dec7fcba07500e27a3361ee/themes/Frontend/Responsive/frontend/_public/src/js/jquery.loading-indicator.js#L65-L72>

```
$.loadingIndicator.open().then(function(){
    console.log('blabla');
});

// close
$.loadingIndicator.close().then(function);

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [29. März 2018 um 05:51 UTC](https://forum.shopware.com/t/ajax-loader-verschwindet-nicht/52020/4 "2018-03-29T05:51:56Z")

</div>

@Shopwareianer‍

H‍allo,

‍ich habe im Internet eben die Methode mit **setLoading** (true) gefunden. Wenn deine best Practise ist (wobei **setLoading** () eigentlich mehr best Practise klingt), kann ich auch gern das benutzen.

der Ajax-Request liefert JSON zurück. Ich hatte das setLoading(false) schon überall ausprobiert … in der Success-, Error-, Complete- und Always-Function.

Manchmal funktioniert es, manchmal nicht…

Wenn ich an gleicher Stelle meinen genannten Code einfüge, dann funktioniert es immer. Lässt für mich nur den Schluss zu, dass die setLoading irgendeinen Bug hat …&nbsp;

bin ja wohl auch nicht der einzige.

&nbsp;

Wenn ich es in der Console ausführe wenn der Loader hängt, dann schließt er sich.

---

<div class="post-metadata">

**Author:** ![Shopwareianer](https://avatars.discourse-cdn.com/v4/letter/s/b4bc9f/32.png) [@Shopwareianer](https://forum.shopware.com/u/Shopwareianer)\
**Post date:** [29. März 2018 um 07:43 UTC](https://forum.shopware.com/t/ajax-loader-verschwindet-nicht/52020/5 "2018-03-29T07:43:19Z")

</div>

Manchmal funktioniert es, manchmal nicht gibt es in der Programmierung nicht&nbsp; ![Angry-Face](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/angry-face.png "Angry-Face")

Da muss dann irgendwo was zwischen schießen, ein falsches Ergebnis zurück kommen oder sonstiges.

Da müsste man sich einfach mal den kompletten Code anschauen. Führst du das ganze bei einer EK aus oder dergleichen? Wie sieht denn der genaue Code aus?

Sonst kann man nur raten, vor allem ohne debugging.

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [29. März 2018 um 12:42 UTC](https://forum.shopware.com/t/ajax-loader-verschwindet-nicht/52020/6 "2018-03-29T12:42:54Z")

</div>

Hallo @Shopwareianer‍

nein es ist eine ganz normale Seite, keine Einkaufswelt.

Es sollte doch davon unabhängig sein, welches Ergebnis zurückkommt vom Ajax-Call. Ist ja auch egal, hat mit dem Loader ja nichts zu tun.

Außerdem habe ich es wie gesagt in&nbsp;Success-, Error-, Complete- und Always-Callback eingebaut. Einer davon muss ja getriggert werden.

Ich habe natürlich getestet und parallel zum setLoading(false) auch noch eine console.log integriert. Der Consolen-Log funktioniert immer, das Ausblenden des Loaders NICHT.

&nbsp;

ganz nebenbei: den Erhalt des korrekten Ergebnisses vom Ajax-Call sehe ich ja daran, dass er auf der Seite nachgeladen und angezeigt wird. Der geladene Content wird angezeigt, der Loader bleibt trotzdem stehen.

&nbsp;

was soll ich da noch debuggen? Diese Funktion funktioniert offen bar nicht, und @Misengo‍ hat das Problem offenbar auch.

---

<div class="post-metadata">

**Author:** ![Shopwareianer](https://avatars.discourse-cdn.com/v4/letter/s/b4bc9f/32.png) [@Shopwareianer](https://forum.shopware.com/u/Shopwareianer)\
**Post date:** [29. März 2018 um 13:01 UTC](https://forum.shopware.com/t/ajax-loader-verschwindet-nicht/52020/7 "2018-03-29T13:01:20Z")

</div>

Da is nichts buggy.

Ich habe es gerade einmal getestet, funktioniert ohne Probleme:

```
$.loadingIndicator.open().then(function(){
    $.ajax({
        'dataType': 'jsonp',
        'url': 'https://jsonplaceholder.typicode.com/posts/1',
        'success': function (result) {
            setTimeout(function(){ 
                $.loadingIndicator.close();
            }, 3000);
        }
    });
});

```

Hier die Demo: [https://sandbox.shopwareianer.com/lebensmittel/](https://sandbox.shopwareianer.com/lebensmittel/)

Bzgl. der Einkaufswelt ist es so, dass du dich erst an das Event von der EK hängen musst, da ansonsten das Script nicht geladen wird, da jQuery & Co. nicht verfügbar ist.

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [29. März 2018 um 13:06 UTC](https://forum.shopware.com/t/ajax-loader-verschwindet-nicht/52020/8 "2018-03-29T13:06:17Z")

</div>

@Shopwareianer‍

$.loadingIndicator.close(); ist ja auch nicht die Funktion die ich verwende.

Ich verwende $(“body”).setLoading(true/false)

&nbsp;

es ist in keiner Einkaufswelt aber danke für den Hinweis.

---

<div class="post-metadata">

**Author:** ![Shopwareianer](https://avatars.discourse-cdn.com/v4/letter/s/b4bc9f/32.png) [@Shopwareianer](https://forum.shopware.com/u/Shopwareianer)\
**Post date:** [29. März 2018 um 13:09 UTC](https://forum.shopware.com/t/ajax-loader-verschwindet-nicht/52020/9 "2018-03-29T13:09:44Z")

</div>

Du kannst ja einfach $loadingIndicator verwenden.

bzgl. der EK: Hier ist es nur so, wenn du innerhalb der EK etwas machst. Bspw. ein Widget oder dergleichen.

Hier ist übrigens die Demo mit dem loadingIndicator:&nbsp;[https://sandbox.shopwareianer.com/lebensmittel/](https://sandbox.shopwareianer.com/lebensmittel/)

Wenn du es innerhalb einer EK machen würdest, wäre es dann:

```
$.subscribe('plugin/swEmotionLoader/onLoadEmotionFinished', function() {  
    $.loadingIndicator.open().then(function(){
        $.ajax({
            'dataType': 'jsonp',
            'url': 'https://jsonplaceholder.typicode.com/posts/1',
            'success': function (result) {
                setTimeout(function(){ 
                    $.loadingIndicator.close();
                }, 3000);
            }
        });
    });
}

```

Bei einem Modal ist es dasselbe wie ich letztens bemerkt habe. Da hängst du dich dann an&nbsp;plugin/swAjaxVariant/onRequestData

PS: Habe es nun auch mit&nbsp;$(“body”).setLoading(true/false) getestet. Funktioniert ebenfalls ohne Probleme, siehe Demo.
