Как обновить количество мини-корзины Woocommerce? 400 Ошибка: неверный запрос

Я нашел фрагмент в Github, который предположительно работает, но, как вы можете видеть в комментариях, в нем отсутствует логика кэширования.

Я пытаюсь обновить мини-корзину при каждом изменении количества с помощью ajax.

Прямо сейчас я потерялся, не могу найти ничего, что работает, и обновить количество моей мини-корзины Woocommerce.

Вот functions.php

//Add mini cart quantity field
add_filter( 'woocommerce_widget_cart_item_quantity', 'add_minicart_quantity_fields', 10, 3 );
function add_minicart_quantity_fields( $html, $cart_item, $cart_item_key ) {
    $product_price = apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $cart_item['data'] ), $cart_item, $cart_item_key );

    return woocommerce_quantity_input( array('input_value' => $cart_item['quantity']), $cart_item['data'], false ) . $product_price;
}


//Update mini cart
function ajax_update_mini_cart() {
  echo wc_get_template( 'cart/mini-cart.php' );
  die();
}
add_filter( 'wp_ajax_nopriv_ajax_update_mini_cart', 'ajax_update_mini_cart' );
add_filter( 'wp_ajax_ajax_update_mini_cart', 'ajax_update_mini_cart' );

и мой ajax-скрипт

// Update Mini Cart
$(document).ready(function () {
  jQuery('#cart').on('change', 'input', function () {
    $.post(
      woocommerce_params.ajax_url,
      { action: 'mode_theme_update_mini_cart' },
      function (response) {
        $('#mode-mini-cart').html(response);
      }
    );
  });
});

Я получаю следующую ошибку консоли от javascript:

POST http://localhost/wordpress/wp-admin/admin-ajax.php 400 (плохой Запрос)

Но я не понимаю почему, я дважды проверил скрипт и функцию, все должно работать нормально.

Как я могу обновить мини-тележку Woocommerce на основе ajax и предотвратить переопределение обновления кешем?

Здесь есть что-нибудь полезное? stackoverflow.com/questions/16017081/…

react_or_angluar 14.12.2020 01:20
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
1 057
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Все остальные возможности в сторону. По крайней мере, ваш action назван неправильно в действии ajax.

// Update Mini Cart
$(document).ready(function () {
  jQuery('#cart').on('change', 'input', function () {
    $.post(
      woocommerce_params.ajax_url,
      { action: 'ajax_update_mini_cart' }, // This must match the name of your wp_ajax filter
      function (response) {
        $('#mode-mini-cart').html(response);
      }
    );
  });
});

Вышеизложенное основано на этих строках:

add_filter( 'wp_ajax_nopriv_ajax_update_mini_cart', 'ajax_update_mini_cart' );
add_filter( 'wp_ajax_ajax_update_mini_cart', 'ajax_update_mini_cart' );

где wp_ajax_{your_action_name} и wp_ajax_nopriv_{your_action_name} должны соответствовать действию ajax.

Может ли быть проблема с вашей функцией? Да... но, скорее всего, именно поэтому вы получаете ошибку 400.

Вы правы насчет ajax (странно, хотя кто-то опубликует этот код и назовет действие неправильно), но теперь у меня сама функция не работает.

Yotam 14.12.2020 14:02

Наверное, это должны быть два разных вопроса? Один - проблема с вашей функцией. 2 - проблема с неработающим ajax?

Howard E 14.12.2020 21:56

Возможно, вы правы, я задам еще один вопрос

Yotam 14.12.2020 22:19

Другие вопросы по теме