2014-11-04 253 views
0

我正在使用的WooCommerce商店需要在更改數量後更新購物車頁面。另外,默認情況下它不能具有更新購物車按鈕。 任何想法如何,可能與AJAX或任何其他線索?WooCommerce購物車頁面需要更新,無需更新購物車按鈕

任何幫助將是太棒了! 目前我們網頁的購物車類似於http://www.shoopclothing.com,它應該像http://www.shoescribe.com/一樣。

我試過到目前爲止:

  • 試圖尋找更新的購物車方法本身,而是無法找到究竟是改變車的分類彙總。

  • 也試圖使用AJAX打印出來的頁面,而不重新加載它。這只是重新加載整個頁面,但數量仍然是相同的

這是我們試過的腳本:

$(".product-order").on("click", "span.add", function() { 
     var form = $(this).closest('form').serialize(); 
     $.ajax({ 
      type: "POST", 
      url: "update_cart url", 
      data: form 
     }).done(function(msg) { 
      console.log(msg); 
      alert("Data Saved: " + msg); 
     }); 
    }); 
+0

分享你的研究可以幫助每個人。告訴我們你試過了什麼,以及它爲什麼不符合你的需求。這表明你已經花時間去嘗試幫助自己,它使我們避免重申明顯的答案,最重要的是它可以幫助你得到更具體和相關的答案!另請參閱[如何問](http://stackoverflow.com/help/how-to-ask) – 2014-11-04 12:57:08

+1

已添加更多信息,希望對您有所幫助 – Dave 2014-11-04 13:39:04

回答

0

你的問題是,你發送的序列化數據來更新車的功能,所以它不能識別發佈數據,你必須把你所有的輸入字段放在你的jquery帖子中

1

嘿,如果還不算太晚,這裏有一個快速的解決方案,可以更新你的購物車,而無需點擊「更新購物車「按鈕。這不是AJAX,但它是一個簡單的方法來完成它。

基本上,如果用戶更改任何項目的數量,購物車將在用戶退出產品數量td後更新。它使用.trigger()jQuery事件處理程序自動提交表單。

只要使用此jQuery代碼:

jQuery(document).ready(function() { 
    var itemQtyInitial; 

    jQuery('.woocommerce table.cart tr.cart_item .product-quantity').hover(function() { 
     itemQtyInitial = jQuery('.qty', this).val(); 
    }, function() { 
     var itemQtyExit = jQuery('.qty', this).val(); 

     if(itemQtyInitial != itemQtyExit) { 
      jQuery(".button[name='update_cart']").trigger("click"); 
     } 
    }); 

}); 

然後你可以用這個CSS隱藏 「更新購物車」 按鈕:

.woocommerce table.cart td.actions input[name="update_cart"] { 
    display: none; 
} 

這應該工作!

+0

這樣做可以讓工作完成,直到我們有更多時間實施更好的實時更新而無需刷新頁面。 Woocommerce是否實施了任何方式來做到這一點,而不需要深入研究代碼?我還沒有找到內置的解決方案。 – Josh 2016-05-17 19:14:20

1

感謝Niko。我對他的代碼片段做了一點改動。 它現在應該運行良好,即使與woocommerce阿賈克斯。 用戶點擊「+」或「 - 」後,購物車將自動更新。

$('body').on('click','table.cart .quantity',function(){ 
    var itemQtyInitial; 

    jQuery('.woocommerce table.cart tr.cart_item .product-quantity').hover(function() { 
     itemQtyInitial = jQuery('.qty', this).val(); 
     console.log("inital",itemQtyInitial); 
    }, function() { 
     var itemQtyExit = jQuery('.qty', this).val(); 
     console.log("change",itemQtyExit); 
     if(itemQtyInitial != itemQtyExit) { 
      jQuery(".button[name='update_cart']").trigger("click"); 
     } 
    }); 
});