JsonHttpControllerResponses verändern

Thema wurde von Anonymous, 9. Januar 2019 erstellt.

  1. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    17. Juli 2018
    Beiträge:
    49
    Danke erhalten:
    8
    Danke vergeben:
    11
    Hi,

    ich suche eine Möglichkeit, dass nach dem Setzen eines Artikels auf den Merkzettel, dieser nicht aufgerufen wird, sondern auf der Seite eine Veränderung im HTML stattfindet.

    Bisher habe ich den WishListController gefunden und gesehen, dass ich in der "add" Action das Ergebnis anpassen kann, dass dann zu einer JsonHttpControllerResponse verbaut wird.

    In dem Array 'type' nicht mehr auf 'url' gesetzt, das Key-Value Paar 'url' gelöscht und Teil 1 (nicht mehr weiterleiten) funktioniert schon mal.

    Nur, wie weiter? in anderen Controllern sehe ich, dass hier per $result['content'] Arrays mit Selektoren und Values übergeben werden, die wenn ich es richtig verstehe, nach Antwort des Services auf der Seite verbaut werden. Ich sehe hier als Typen z.B. 'text', 'html' und 'replace'. Spiele ich damit rum, passiert bei mir aber nix.

    Hier ein Beispiel

    PHP:
    $result = array(
       
    'success' => true,
       
    'content' => array(
          
    'label'    => array(
             
    'selector' => 'my_selector',  
             
    'type'     => 'replace',
             
    'value'    => 'test123'
           
    )
      )
    );

    return 
    MainFactory::create'JsonHttpControllerResponse'$result );
    Nun hätte ich erwartet, dass der Inhalt des html-elements mit der Klasse "my_selector" (welches ich auf der Seite habe) mit dem Inhalt von 'value' ersetzt wird. Laut developer-tools sieht die Response auch wie erwartet aus. Es passiert aber nichts.

    Sind diese Responses irgendwo genauer dokumentiert? Oder hat irgendwer einen Tipp, was ich hier übersehe?

    Vieln Dank!
     
  2. Diese Möglichkeit hatte ich auch gesucht, und konnte das Dank @Ed von packmaster.de (nicht umsonst, aber auch nicht teuer) lösen.
    Kannst du dir mal anschauen bei mir im Shop und da anfragen.
     
  3. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    17. Juli 2018
    Beiträge:
    49
    Danke erhalten:
    8
    Danke vergeben:
    11
    Vielen Dank, aber das was ich in deinem Shop sehe, ist leider genau der Teil, den ich schon hinbekommen habe. ;)
     
  4. wenn du schon nach dem Setzen eines Artikels auf den Merkzettel, dieser nicht aufgerufen wird, sondern auf der Seite eine Veränderung im HTML stattfindet hinbekommen hast. Was sucht du noch?
     
  5. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    17. Juli 2018
    Beiträge:
    49
    Danke erhalten:
    8
    Danke vergeben:
    11
    Ich hatte bei Dir nur gesehen, dass die Seite statt den Merkzettel zu laden, selbst neu geladen wird. Bei der Tour geht natürlich der Counter der Artikel im Merkzettel um eines hoch. Das passiert aber serverseitig, soweit ich das einschätzen kann.

    Das ist nicht ganz was ich meine. Ich versuche ohne erneuten Pageload (auch nicht der aktuellen Seite) ein bestehendes HTML-Element auf der Seite zu verändern. Ich dachte, da käme man vielleicht mit diesem 'replace' in der XHR-Response weiter. Ggf. gibt es da ein JS, dass diese Antwort verarbeitet und dann "verbaut".

    Vielleicht bin ich auch blind und habe was bei dir übersehen. Bin gerne bereit, mich da eines Besseren belehren zu lassen. Danke nochmal!
     
  6. Genau, das überhaupt ein Counter hochzählt ist auch keine Gambio Standard-Funktion.
    Was denn?
     
  7. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    17. Juli 2018
    Beiträge:
    49
    Danke erhalten:
    8
    Danke vergeben:
    11
    Im aktuellen Fall möchte ich den Inhalt des geklickten "Auf den Merkzettel"-Links auf Kategorieseiten mit neuem Inhalt ersetzen. Dafür haben alle Merkzettel-Links bereits eine Klasse "whishlist-button-product-id-xyz" erhalten, damit ich den entsprechenden Link identifizieren kann. Ich dachte, diesen könnte ich irgendwie mit der Antwort des XHR-Requests ändern können/lassen. Der Drop-Down-Warenkorb wird ja auch auf diese Weise und ohne einen erneuten Pageload angepasst, der Status-Check bei Produkten geht auch per AJAX etc. Daher vermute ich, dass es irgendein Script gibt, dass XHR-Antworten in einer bestimmten Formatierung im DOM verbauen kann.

    Klar, prinzipiell kann ich einfach ein weiteres JS einbauen, dass einen Click auf die Buttons mit entsprechender Klasse handelt und das für mich macht. Generell interessiert mich aber, ob und wie das überhaupt mit dem XHR-Antworten funktioniert (oder was ich übersehe, warum das in dem von mir skizzierten Szenario nicht gehen kann). Wenn man mal an anderen Services rumbaut oder eigene schreiben möchte, wäre das ganz nützlich.