2014-12-24 3 views
6

Ich habe eine benutzerdefinierte Schaltfläche auf meiner Checkout-Seite, auf klicken Ich füge ein Produkt in den Warenkorb über AJAX.update_order_review() auf Knopf klicken

JS:

$('#add_domain_product').on('click', function() { 
     $.ajax({ 
      url: Ajax.ajaxurl, 
      type: "POST", 
      data: { 
       action: 'add_domain_product', 
      }, 
      success: function (data, status, xhr) { 
       // update command is executed. 
       console.log(data); 
      } 

     }); 
    }) 

PHP:

add_action('wp_ajax_add_domain_product', 'bs_add_domain_product'); 
function bs_add_domain_product() { 
    global $woocommerce; 
    $woocommerce->cart->add_to_cart('633'); 
    exit(); 
} 

Danach würde ich brauche den Auftrag Beitrag zu aktualisieren, so dass es auch meine neu aufgenommenen Artikel anzeigt. Wie kann ich das machen?

+0

war ich nur über eine sehr ähnliche Frage zu stellen. Hast du das gelöst? Theoretisch sollten Sie dazu in der Lage sein, etwas wie 'WC_AJAX :: update_order_review();' in Ihrer Funktion 'bs_add_domain_product()' zu verwenden. Das * sollte * die Fragmente zur Aktualisierung der Kasse zurückgeben; Allerdings gibt es momentan eine ziemlich nutzlose "-1" für mich zurück, was bedeutet, dass es irgendwo in WooCommerces Handschrift dieser speziellen Funktion möglicherweise einen Fehler gibt. Oder ich verstehe es völlig falsch. – indextwo

+0

Sehen Sie die akzeptierte Lösung, funktioniert wie ein Charme. – user1049961

Antwort

16

Alles, was Sie tun müssen, ist einen Auslöser am Körper zu rufen, um den Wagen zu aktualisieren.

$('body').trigger('update_checkout'); 

Dies wird automatisch alle nachfolgenden AJAX Anrufe benötigt rufen Sie den Warenkorb Informationen, einschließlich der Reihenfolge Überprüfung zu aktualisieren.

+0

DANKE SOOOO VIEL !!! – Zander

1

In Kasse Seite:

jQuery(document.body).trigger("update_checkout") 

In den Warenkorb Seite:

jQuery(document.body).trigger("wc_update_cart");