# JQuery Ajax und eigener Frontend Controller

**URL:** https://forum.shopware.com/t/jquery-ajax-und-eigener-frontend-controller/51300
**Category:** Programmierung
**Created:** [21. Februar 2018 um 19:54 UTC](https://forum.shopware.com/t/jquery-ajax-und-eigener-frontend-controller/51300 "2018-02-21T19:54:45Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Tomoffel](https://avatars.discourse-cdn.com/v4/letter/t/839c29/32.png) [@Tomoffel](https://forum.shopware.com/u/Tomoffel)
#### Post date: [21. Februar 2018 um 19:54 UTC](https://forum.shopware.com/t/jquery-ajax-und-eigener-frontend-controller/51300/1 "2018-02-21T19:54:45Z")

</div>

Guten Abend,

ich versuche gerade per Ajax Informationen von einem eigenen Frontend Controller nachzuladen. Leider erhalten ich jedoch immer nur die&nbsp;Meldung&nbsp;503 (Service Unavailable), bzw. eine Smarty-Fehlermeldung das mir die entsprechende tpl (sw\_article.tpl) fehlen würde. Aber ich möchte ja kein neues Template laden, sondern einfach nur ein paar Daten nachladen nachdem der Benutzer das Drop-Down verändert hat.

Hier mal meine beteiligten Klassen:

Frontend Controller:

```
Request()->getParam('group', []);

        $this->View()->selection = $selection;
    }

}

```

Jquery mit Ajax aufruf

```
$.overridePlugin('swAjaxVariant', {

    onChange: function(event) {
        var $form = $(event.target).parents('form');
        var exist = true;
        var values = {};

        $.each($form.serializeArray(), function(i, item) {
            if (item.name === '__csrf_token') {
                return;
            }

            values[item.name] = item.value;
            $(event.target.options).each(function(){
                if(item.value == $(this).val()) {
                    if($(this).attr("noVariant")) {
                        exist = false;
                    }
                }
            });
        });

        if(exist) {
            this.superclass.onChange.apply(this, arguments);
        } else {
            $.ajax({
                url: "http://localhost/shopware/SwArticle/index",
                data: values,
                method: 'GET',
                success: function(result, data) {
                    console.log(result);
                    console.log(data);
                }
            });
        }
    }
});

```

Vielleicht kann mir jemand erklären wie ich dies richtig machen muss. Leider hab ich nichts dazu gefunden.

---

<div class="post-metadata">

### Author: ![christiantrade](https://avatars.discourse-cdn.com/v4/letter/c/c4cdca/32.png) [@christiantrade](https://forum.shopware.com/u/christiantrade)
#### Post date: [22. Februar 2018 um 05:12 UTC](https://forum.shopware.com/t/jquery-ajax-und-eigener-frontend-controller/51300/2 "2018-02-22T05:12:43Z")

</div>

Dann musst du das in deiner Action Shopware auch mitteilen, da Shopware mittlerweile ein Template Verzeichnis erwartet, bzw. eben eine Template Datei.

```
$this->container->get('front')->Plugins()->ViewRenderer()->setNoRender();

```

&nbsp;

---

<div class="post-metadata">

### Author: ![Tomoffel](https://avatars.discourse-cdn.com/v4/letter/t/839c29/32.png) [@Tomoffel](https://forum.shopware.com/u/Tomoffel)
#### Post date: [22. Februar 2018 um 06:55 UTC](https://forum.shopware.com/t/jquery-ajax-und-eigener-frontend-controller/51300/3 "2018-02-22T06:55:21Z")

</div>

So geht es. Danke!

Hätte ich das irgendwo in der Doku finden können?

&nbsp;

P.S. Als Hinweis falls mal jemand anderes mit diesem Problem hierhin kommt. Im Frontend-Controller muss die Rückgabe über echo erfolgen. Es würde dann also so aussehen:

```
Request()->getParam('group', []);

        $this->container->get('front')->Plugins()->ViewRenderer()->setNoRender();

        echo json_encode($selection);
    }

}

$.overridePlugin('swAjaxVariant', {

    onChange: function(event) {
        var $form = $(event.target).parents('form');
        var exist = true;
        var values = {};

        values['changedGroup'] = event.target.name.substring(6, event.target.name.length - 1);

        $.each($form.serializeArray(), function(i, item) {
            if (item.name === '__csrf_token') {
                return;
            }

            values[item.name] = item.value;
            $(event.target.options).each(function(){
                if(item.value == $(this).val()) {
                    if($(this).attr("noVariant")) {
                        exist = false;
                    }
                }
            });
        });

        if(exist) {
            this.superclass.onChange.apply(this, arguments);
        } else {
            $.ajax({
                url: "http://localhost/shopware/SwArticle/index",
                data: values,
                method: 'GET',
                success: function(response) {
                    var result = $.parseJSON(response);
                }
            });
        }
    }
});

```

&nbsp;

---

<div class="post-metadata">

### Author: ![christiantrade](https://avatars.discourse-cdn.com/v4/letter/c/c4cdca/32.png) [@christiantrade](https://forum.shopware.com/u/christiantrade)
#### Post date: [22. Februar 2018 um 10:30 UTC](https://forum.shopware.com/t/jquery-ajax-und-eigener-frontend-controller/51300/4 "2018-02-22T10:30:48Z")

</div>

> [@Tomoffel schrieb:](https://forum.shopware.com/profile/28011/Tomoffel "Tomoffel")
> 
> So geht es. Danke!
> 
> Hätte ich das irgendwo in der Doku finden können?

Ja hier -\>&nbsp;[Shopware 5 upgrade guide](https://developers.shopware.com/developers-guide/shopware-5-upgrade-guide-for-developers/#security-mode-0&nbsp);

Unter den Security mode.
