【问题标题】:WooCommerce somehow preventing AJAX requests from returning?WooCommerce 以某种方式阻止 AJAX 请求返回?
【发布时间】:2021-01-14 16:29:54
【问题描述】:

我无法对此做出正面或反面。我们在functions.php 中有一个脚本,可以通过 AJAX 将产品添加到购物车:

function add_to_cart() {
    $multipleProducts = $_POST['multipleProducts'];

    $productsArray = $_POST['productsArray'];

    foreach ($productsArray as $product) {
        $product_id = apply_filters('woocommerce_add_to_cart_product_id', absint($product[0]));
        $quantity = empty($_POST['quantity']) ? 1 : wc_stock_amount($product[1]);

        \WC()->cart->add_to_cart($product_id, $quantity, null, []);
    }

    error_log('help!!!');
    echo '200';
    wp_die();
}

error_log 记录正常,这意味着代码实际上已经达到了那么远。但是,它永远不会 echoes 任何东西或返回任何东西。没有响应,没有错误,只是发送,从不接收。

如果我将error_logecho 移到foreach 上方,一切正常。

以前有人见过这种情况吗?我真的不认为这是可能的。

【问题讨论】:

  • 您能否再添加一点上下文?因为从代码和你如何描述它来看,它没有任何意义。请给我们用于为 WP 添加 ajax 操作的 php 代码(您使用 _nopriv 和标准操作吗?)以及触发/接收该 ajax 答案的 JS 代码

标签: php ajax wordpress woocommerce cart


【解决方案1】:

当产品成功添加到购物车时,WC_Cart add_to_cart() 方法返回购物车项目密钥,否则返回 false,因此您可以尝试将代码更改为:

function add_to_cart() {
    if ( isset($_POST['multipleProducts']) && isset($_POST['productsArray']) ) :
    
    $multipleProducts = $_POST['multipleProducts'];
    $productsArray    = $_POST['productsArray'];
    $response         = []; // Initializing

    foreach ($productsArray as $product) {
        $product_id = apply_filters('woocommerce_add_to_cart_product_id', absint($product[0]));
        $quantity = empty($_POST['quantity']) ? 1 : wc_stock_amount($product[1]);

        $cart_item_key = WC()->cart->add_to_cart($product_id, $quantity, null, []);
        
        $status = $cart_item_key ? 'success' : 'failed';
        
        $response[] = array(
            'product_id'    => $product_id,
            'quantity'      => $quantity,
            'cart_item_key' => $cart_item_key,
            'status'        => $status
        );
    }

    error_log(print_r( $response, true ));
    echo json_encode($response);
    wp_die();
    endif;
}

它可以工作......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-06
    • 2014-09-24
    • 2022-10-19
    • 2019-11-04
    • 1970-01-01
    • 2019-08-01
    • 2011-04-11
    • 1970-01-01
    相关资源
    最近更新 更多